commit d7cbb44d84a28d7466a4ad23d1666cbcf9a4e560 Author: Jaidyn Ann Date: Sat Jun 11 13:00:24 2022 -0500 Init diff --git a/ImageControlLook.cpp b/ImageControlLook.cpp new file mode 100644 index 0000000..75ac0ad --- /dev/null +++ b/ImageControlLook.cpp @@ -0,0 +1,25 @@ +/* + * Copyright 2022, Jaidyn Levesque + * All rights reserved. Distributed under the terms of the MIT license. + */ + +#include "ImageControlLook.h" + + +ImageControlLook::ImageControlLook(image_id id) + : + HaikuControlLook() +{ +} + + + +ImageControlLook::~ImageControlLook() +{ +} + + +extern "C" BControlLook* (instantiate_control_look)(image_id id) +{ + return new (std::nothrow)ImageControlLook(id); +} diff --git a/ImageControlLook.h b/ImageControlLook.h new file mode 100644 index 0000000..3c95006 --- /dev/null +++ b/ImageControlLook.h @@ -0,0 +1,27 @@ +/* + * Copyright 2022, Jaidyn Levesque + * Distributed under the terms of the MIT License. + * All rights reserved. Distributed under the terms of the MIT license. + */ +#ifndef IMAGE_CONTROL_LOOK_H +#define IMAGE_CONTROL_LOOK_H + +#include +#include + +class BBitmap; +class BControl; +class BGradientLinear; +class BView; + + +using BPrivate::HaikuControlLook; + + +class ImageControlLook : public HaikuControlLook { +public: + ImageControlLook(image_id id); + virtual ~ImageControlLook(); +}; + +#endif // IMAGE_CONTROL_LOOK_H diff --git a/ImageControlLook.rdef b/ImageControlLook.rdef new file mode 100644 index 0000000..a995880 --- /dev/null +++ b/ImageControlLook.rdef @@ -0,0 +1,9 @@ +resource app_version { + major = 1, + middle = 0, + minor = 0, + variety = B_APPV_ALPHA, + internal = 0, + short_info = "Image Control Look; Rev: 0.0 ", + long_info = "A control look for custom image-based themes." +}; diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..207054a --- /dev/null +++ b/Makefile @@ -0,0 +1,133 @@ +## Haiku Generic Makefile v2.6 ## + +## Fill in this file to specify the project being created, and the referenced +## Makefile-Engine will do all of the hard work for you. This handles any +## architecture of Haiku. +## +## For more information, see: +## file:///system/develop/documentation/makefile-engine.html + +# The name of the binary. +NAME = ImageControlLook + +# The type of binary, must be one of: +# APP: Application +# SHARED: Shared library or add-on +# STATIC: Static library archive +# DRIVER: Kernel driver +TYPE = SHARED + +# If you plan to use localization, specify the application's MIME signature. +APP_MIME_SIG = + +# The following lines tell Pe and Eddie where the SRCS, RDEFS, and RSRCS are +# so that Pe and Eddie can fill them in for you. +#%{ +# @src->@ + +# Specify the source files to use. Full paths or paths relative to the +# Makefile can be included. All files, regardless of directory, will have +# their object files created in the common object directory. Note that this +# means this Makefile will not work correctly if two source files with the +# same name (source.c or source.cpp) are included from different directories. +# Also note that spaces in folder names do not work well with this Makefile. +SRCS = ImageControlLook.cpp + +# Specify the resource definition files to use. Full or relative paths can be +# used. +RDEFS = ImageControlLook.rdef + +# Specify the resource files to use. Full or relative paths can be used. +# Both RDEFS and RSRCS can be utilized in the same Makefile. +RSRCS = + +# End Pe/Eddie support. +# @<-src@ +#%} + +# Specify libraries to link against. +# There are two acceptable forms of library specifications: +# - if your library follows the naming pattern of libXXX.so or libXXX.a, +# you can simply specify XXX for the library. (e.g. the entry for +# "libtracker.so" would be "tracker") +# +# - for GCC-independent linking of standard C++ libraries, you can use +# $(STDCPPLIBS) instead of the raw "stdc++[.r4] [supc++]" library names. +# +# - if your library does not follow the standard library naming scheme, +# you need to specify the path to the library and it's name. +# (e.g. for mylib.a, specify "mylib.a" or "path/mylib.a") +LIBS = be $(STDCPPLIBS) + +# Specify additional paths to directories following the standard libXXX.so +# or libXXX.a naming scheme. You can specify full paths or paths relative +# to the Makefile. The paths included are not parsed recursively, so +# include all of the paths where libraries must be found. Directories where +# source files were specified are automatically included. +LIBPATHS = + +# Additional paths to look for system headers. These use the form +# "#include
". Directories that contain the files in SRCS are +# NOT auto-included here. +SYSTEM_INCLUDE_PATHS = \ + $(shell findpaths -e B_FIND_PATH_HEADERS_DIRECTORY private/interface) + + +# Additional paths paths to look for local headers. These use the form +# #include "header". Directories that contain the files in SRCS are +# automatically included. +LOCAL_INCLUDE_PATHS = + +# Specify the level of optimization that you want. Specify either NONE (O0), +# SOME (O1), FULL (O3), or leave blank (for the default optimization level). +OPTIMIZE := + +# Specify the codes for languages you are going to support in this +# application. The default "en" one must be provided too. "make catkeys" +# will recreate only the "locales/en.catkeys" file. Use it as a template +# for creating catkeys for other languages. All localization files must be +# placed in the "locales" subdirectory. +LOCALES = + +# Specify all the preprocessor symbols to be defined. The symbols will not +# have their values set automatically; you must supply the value (if any) to +# use. For example, setting DEFINES to "DEBUG=1" will cause the compiler +# option "-DDEBUG=1" to be used. Setting DEFINES to "DEBUG" would pass +# "-DDEBUG" on the compiler's command line. +DEFINES = + +# Specify the warning level. Either NONE (suppress all warnings), +# ALL (enable all warnings), or leave blank (enable default warnings). +WARNINGS = + +# With image symbols, stack crawls in the debugger are meaningful. +# If set to "TRUE", symbols will be created. +SYMBOLS := + +# Includes debug information, which allows the binary to be debugged easily. +# If set to "TRUE", debug info will be created. +DEBUGGER := + +# Specify any additional compiler flags to be used. +COMPILER_FLAGS = + +# Specify any additional linker flags to be used. +LINKER_FLAGS = + +# Specify the version of this binary. Example: +# -app 3 4 0 d 0 -short 340 -long "340 "`echo -n -e '\302\251'`"1999 GNU GPL" +# This may also be specified in a resource. +APP_VERSION := + +# (Only used when "TYPE" is "DRIVER"). Specify the desired driver install +# location in the /dev hierarchy. Example: +# DRIVER_PATH = video/usb +# will instruct the "driverinstall" rule to place a symlink to your driver's +# binary in ~/add-ons/kernel/drivers/dev/video/usb, so that your driver will +# appear at /dev/video/usb when loaded. The default is "misc". +DRIVER_PATH = + +## Include the Makefile-Engine +DEVEL_DIRECTORY := \ + $(shell findpaths -r "makefile_engine" B_FIND_PATH_DEVELOP_DIRECTORY) +include $(DEVEL_DIRECTORY)/etc/makefile-engine diff --git a/util/cpp_from_h.sh b/util/cpp_from_h.sh new file mode 100755 index 0000000..3cc857a --- /dev/null +++ b/util/cpp_from_h.sh @@ -0,0 +1,81 @@ +#!/bin/sh +#――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― +# Name: cpp_from_h.sh +# Desc: A hackish script that will make Haiku-style CPP files from a header +# file― in the case that you want to make the skeleton of a class'es +# child. +# Ended up not using it for the skeleton of ImageControlLook.cpp, but eh. +# I've already written it, might as well commit. :P +# Date: 2022-06 +#――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― + +# If you have garbage in output, this is probably to blame. +only_functions() { + grep "$(printf '\t')" \ + | grep -v '^[*#/]' \ + | grep -v '^ ' \ + | tr '\t' ' ' \ + | tr -s ' ' +} + + +collapse_functions() { + local child="$1" + local parent="$2" + + local OFS="$IFS" + IFS=" +" + local type="" + local func="" + local args="" + while read line; do + if echo "$line" | grep '(' > /dev/null; then + printf '\n\n%s\n%s::%s(%s)\n' "$type" "$child" "$func" "$args" \ + | tr -s ' ' + + printf '{\n\t' + if echo "$type" | grep -v "void" > /dev/null; then + printf 'return ' + fi + printf '%s::%s(%s);\n}\n' "$parent" "$func" "$args" + + type="$(echo "$line" | sed 's%(.*%%' | awk '{$(NF--)=""; print}')" + type="$(echo "$type" | sed 's%virtual %%')" + func="$(echo "$line" | sed 's%(.*%%' | sed 's%.* %%')" + args="$(echo "$line" | sed 's%.*(%%' | sed 's%);%%')" + else + args="$args $(echo "$line" | sed 's%);%%')" + fi + done + IFS="$OFS" +} + + +fold_functions() { + # We swap spaces and commas so that `fold` will wrap on commas + sed 's%^ %%' \ + | sed 's% %»%g' \ + | sed 's%,% %g' \ + | fold -s --width=98 \ + | sed 's% %,%g' \ + | sed 's%»% %g' \ + | sed 's%^ %\t%' \ + | sed 's%\t %\t\t%' \ + | tr -s ' ' +} + + +FILE="$1" +CHILD="$2" +PARENT="$3" +if test -z "$PARENT" -o -z "$CHILD" -o -z "$FILE"; then + echo "Usage: $(basename "$0") header_file child_classname parent_classname" + exit 2 +fi + + +cat "$FILE" \ +| only_functions \ +| collapse_functions "$CHILD" "$PARENT" \ +| fold_functions