diff options
Diffstat (limited to 'intern/img')
-rw-r--r-- | intern/img/doc/Doxyfile.win | 747 | ||||
-rw-r--r-- | intern/img/extern/IMG_Pixmap.h | 198 | ||||
-rw-r--r-- | intern/img/extern/IMG_PixmapRGBA32.h | 217 | ||||
-rw-r--r-- | intern/img/intern/IMG_Color.h | 144 | ||||
-rw-r--r-- | intern/img/intern/IMG_MemPtr.h | 117 | ||||
-rw-r--r-- | intern/img/intern/IMG_Pixmap.cpp | 85 | ||||
-rw-r--r-- | intern/img/intern/IMG_PixmapRGBA32.cpp | 260 | ||||
-rw-r--r-- | intern/img/intern/Makefile | 43 | ||||
-rw-r--r-- | intern/img/make/msvc/img.dsp | 126 | ||||
-rw-r--r-- | intern/img/make/msvc/img.dsw | 41 |
10 files changed, 1978 insertions, 0 deletions
diff --git a/intern/img/doc/Doxyfile.win b/intern/img/doc/Doxyfile.win new file mode 100644 index 00000000000..242357fe7b5 --- /dev/null +++ b/intern/img/doc/Doxyfile.win @@ -0,0 +1,747 @@ +# Doxyfile 1.2.4 + +# This file describes the settings to be used by doxygen for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# General configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. +#MAART: changed +PROJECT_NAME = ImgLib + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. +#MAART: changed +OUTPUT_DIRECTORY = doc + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, +# Korean, Hungarian, Norwegian, Spanish, Romanian, Russian, Croatian, +# Polish, Portuguese and Slovene. + +OUTPUT_LANGUAGE = English + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. +# MAART: changed +EXTRACT_STATIC = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these class will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. It is allowed to use relative paths in the argument list. + +STRIP_FROM_PATH = + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a class diagram (in Html and LaTeX) for classes with base or +# super classes. Setting the tag to NO turns the diagrams off. + +CLASS_DIAGRAMS = YES + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower case letters. If set to YES upper case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# users are adviced to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explict @brief command for a brief description. +#MAART: changed +JAVADOC_AUTOBRIEF = YES + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# reimplements. + +INHERIT_DOCS = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# The ENABLE_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = . +#C:\Documents and Settings\maarten\My Documents\develop\blender\source\blender\img + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command <filter> <input-file>, where <filter> +# is the value of the INPUT_FILTER tag, and <input-file> is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. + +INPUT_FILTER = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse. + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side pannel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript and frames is required (for instance Netscape 4.0+ +# or Internet explorer 4.0+). + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. +#MAART: changed +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimised for Word 97 and may not look very pretty with +# other RTF readers or editors. +#MAART: changed +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using a WORD or other. +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assigments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages +#MAART: changed +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. Warning: This feature +# is still experimental and very incomplete. + +GENERATE_XML = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_PREDEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES tag can be used to specify one or more tagfiles. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to +# YES then doxygen will generate a graph for each documented file showing +# the direct and indirect include dependencies of the file with other +# documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to +# YES then doxygen will generate a graph for each documented header file showing +# the documented files that directly or indirectly include this file + +INCLUDED_BY_GRAPH = YES + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. + +DOT_PATH = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO + +# The CGI_NAME tag should be the name of the CGI script that +# starts the search engine (doxysearch) with the correct parameters. +# A script with this name will be generated by doxygen. + +CGI_NAME = search.cgi + +# The CGI_URL tag should be the absolute URL to the directory where the +# cgi binaries are located. See the documentation of your http daemon for +# details. + +CGI_URL = + +# The DOC_URL tag should be the absolute URL to the directory where the +# documentation is located. If left blank the absolute path to the +# documentation, with file:// prepended to it, will be used. + +DOC_URL = + +# The DOC_ABSPATH tag should be the absolute path to the directory where the +# documentation is located. If left blank the directory on the local machine +# will be used. + +DOC_ABSPATH = + +# The BIN_ABSPATH tag must point to the directory where the doxysearch binary +# is installed. + +BIN_ABSPATH = c:\program files\doxygen\bin + +# The EXT_DOC_PATHS tag can be used to specify one or more paths to +# documentation generated for other projects. This allows doxysearch to search +# the documentation for these projects as well. + +EXT_DOC_PATHS = diff --git a/intern/img/extern/IMG_Pixmap.h b/intern/img/extern/IMG_Pixmap.h new file mode 100644 index 00000000000..9d9f247e3b4 --- /dev/null +++ b/intern/img/extern/IMG_Pixmap.h @@ -0,0 +1,198 @@ +/** + * $Id$ + * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. The Blender + * Foundation also sells licenses for use in proprietary software under + * the Blender License. See http://www.blender.org/BL/ for information + * about this. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL/BL DUAL LICENSE BLOCK ***** + */ + +/** + + * $Id$ + * Copyright (C) 2001 NaN Technologies B.V. + * Abstract base class for pixmaps of different types. + * @author Maarten Gribnau + * @date March 6, 2001 + */ + +#ifndef _H_IMG_Pixmap +#define _H_IMG_Pixmap + +#include "GEN_Types.h" +#include "GEN_Rect.h" + + +class IMG_Pixmap +{ +public: + /** The type of pixels that are stored in this pixmap. */ + typedef enum { + kPixelTypeUnknown = 0, /**< R:8, G:8, B:8, Ignore:8 */ +// kPixelTypeRGB32 = 1, /**< R:8, G:8, B:8, Ignore:8 */ + kPixelTypeRGBA32 = 2, /**< R:8, G:8, B:8, Alpha:8 */ +// kPixelTypeRGB16 = 3, /**< Ignore:1, R:5, G:5, B:5 */ +// kPixelTypeRGBA16 = 4, /**< Alpha:1, R:5, G:5, B:5 */ +// kPixelTypeRGB16_565 = 5, /**< R:5, G:6, B:5 */ +// kPixelTypeRGB24 = 6 /**< R:8, G:8, B:8 */ + } TPixelType; + + /** + * Default constructor. + */ + IMG_Pixmap(); + + /** + * Constructs a pixmap with the requested width and height. + * @param width The width of the pixmap created. + * @param height The height of the pixmap created. + */ + IMG_Pixmap(GEN_TUns32 width, GEN_TUns32 height); + + /** + * Destructor. + */ + virtual ~IMG_Pixmap(); + + /** + * Access to image data + * @return pointer to the image data + */ + virtual void* getDataPtr() const = 0; + + /** + * Access to image width. + * @return width of the image + */ + inline GEN_TUns32 getWidth() const; + + /** + * Access to image height. + * @return height of the image + */ + inline GEN_TUns32 getHeight() const; + + /** + * Returns the bounds of the pixmap in a rectangle. + * @param bounds of the image + */ + inline void getBounds(GEN_Rect& r) const; + + /** + * Access to pixel type. + * @return the pixel type + */ + inline TPixelType getPixelType() const; + + /** + * Clamps coordinates inside (0, 0) and (width, height). + * @param x requested x-coordinate + * @param y requested y-coordinate + */ + inline void clamp(GEN_TInt32& x, GEN_TInt32& y) const; + + /** + * Clamps u, v coordinates between 0 and 1. + * @param u requested u-coordinate + * @param v requested v-coordinate + */ + inline void clamp(float& u, float& v) const; + + /** + * Converts (u,v) coordinates to pixel addresses. + * Assumes that (u,v) coordinates are in the [0,1] range. + * @param u requested u-coordinate in the image + * @param v requested v-coordinate in the image + * @param x calculated x-coordinate in the image + * @param y calculated y-coordinate in the image + */ + inline void getPixelAddress(float u, float v, GEN_TInt32& x, GEN_TInt32& y) const; + + /** + * Fills the rectangle given with the color given. + * Performs a bounds check. + * @param r requested bounds rectangle in the image + * @param c color to use + */ + //virtual void fillRect(const GEN_Rect& r, const IMG_ColorRGBA& c) = 0; + +protected: + /** Width of the image in pixels */ + GEN_TUns32 m_width; + /** Height of the image in pixels */ + GEN_TUns32 m_height; + /** Number of bytes for one row in the image. */ + GEN_TUns32 m_rowBytes; + /** Size in bits for one pixel */ + GEN_TUns32 m_pixelSize; + /** Type of pixels in this image. */ + TPixelType m_pixelType; +// TEndian m_bitOrder; +// TEndian m_byteOrder; +}; + +inline GEN_TUns32 IMG_Pixmap::getWidth() const +{ + return m_width; +} + +inline GEN_TUns32 IMG_Pixmap::getHeight() const +{ + return m_height; +} + +inline void IMG_Pixmap::getBounds(GEN_Rect& r) const +{ + r.set(0, 0, m_width, m_height); +} + +inline IMG_Pixmap::TPixelType IMG_Pixmap::getPixelType() const +{ + return m_pixelType; +} + +inline void IMG_Pixmap::clamp(GEN_TInt32& x, GEN_TInt32& y) const +{ + if (x < 0) x = 0; + if (x > (GEN_TInt32)m_width) x = (GEN_TInt32)m_width; + if (y < 0) y = 0; + if (y > (GEN_TInt32)m_height) y = (GEN_TInt32)m_height; +} + +inline void IMG_Pixmap::clamp(float& u, float& v) const +{ + if (u < 0.f) u = 0.f; + if (u > 1.f) u = 1.f; + if (v < 0.f) v = 0.f; + if (v > 1.f) v = 1.f; +} + +inline void IMG_Pixmap::getPixelAddress(float u, float v, GEN_TInt32& x, GEN_TInt32& y) const +{ + x = (GEN_TInt32)(((float)m_width) * u); + y = (GEN_TInt32)(((float)m_height) * v); +} + +#endif // _H_IMG_Pixmap
\ No newline at end of file diff --git a/intern/img/extern/IMG_PixmapRGBA32.h b/intern/img/extern/IMG_PixmapRGBA32.h new file mode 100644 index 00000000000..541bdcfa9a4 --- /dev/null +++ b/intern/img/extern/IMG_PixmapRGBA32.h @@ -0,0 +1,217 @@ +/** + * $Id$ + * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. The Blender + * Foundation also sells licenses for use in proprietary software under + * the Blender License. See http://www.blender.org/BL/ for information + * about this. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL/BL DUAL LICENSE BLOCK ***** + */ + +/** + + * $Id$ + * Copyright (C) 2001 NaN Technologies B.V. + * Pixmap of kPixelTypeRGBA32 type. + * A pixmap with 24 bits per pixel in ABGR format. + * Provides methods to fill rectangular areas in this image with a color. + * Provides methods to paste or blend other pixmaps into this pixmap. + * @author Maarten Gribnau + * @date March 6, 2001 + */ + + +#ifndef _H_IMG_PixmapRGBA32 +#define _H_IMG_PixmapRGBA32 + +#include "IMG_Pixmap.h" +#include "IMG_MemPtr.h" +#include "IMG_Color.h" + + +class IMG_PixmapRGBA32 : public IMG_Pixmap { +public: + /** The pixel type in this pixmap. */ + typedef GEN_TUns32 TPixelRGBA32; + + /** The pixel pointer type of this pixmap. */ + typedef TPixelRGBA32* TPixelPtr; + + /** Indices of color component byes within a pixel. */ + typedef enum { + bi_r = 0, + bi_g = 1, + bi_b = 2, + bi_a = 3 + } TPixelIndex; + + /** + * Constructor. + * Creates a new pixmap of the kPixelTypeRGBA32 type with the requested dimensions. + * @throw <IMG_MemPtr::Size> when an invalid width and/or height is passed. + * @throw <IMG_MemPtr::Memory> when a there is not enough memory to allocate the image. + * @param width the width in pixels of the image. + * @param height the height in pixels of the image. + */ + IMG_PixmapRGBA32(GEN_TUns32 width, GEN_TUns32 height); + + /** + * Constructor. + * Creates a new pixmap of the kPixelTypeRGBA32 from a pointer to image data. + * The image data will not be freed upon destruction of this object. + * The owner of this object is reponsible for that. + * @throw <Size> when an invalid width and/or height is passed. + * @param image pointer to the image data. + * @param width the width in pixels of the image. + * @param height the height in pixels of the image. + */ + IMG_PixmapRGBA32(void* image, GEN_TUns32 width, GEN_TUns32 height, GEN_TUns32 rowBytes); + +#if 0 + /** + * Destructor. + */ + virtual ~IMG_PixmapRGBA32(); +#endif + + /** + * Fills the rectangle given with the color given. + * Retains the alpha values. + * Performs a bounds check. + * @param r requested bounds rectangle in the image + * @param c color to use + */ + virtual void fillRect(const GEN_Rect& r, const IMG_ColorRGB& c); + + /** + * Fills the rectangle given with the color given. + * Sets the alpha values from the color. + * Performs a bounds check. + * @param r requested bounds rectangle in the image + * @param c color to use + */ + virtual void fillRect(const GEN_Rect& r, const IMG_ColorRGBA& c); + + /** + * Pastes an area of a pixmap into this pixmap. + * Pastes an area of the given pixmap centered at the given coordinates into this pixmap. + * Ignores the alpha information, this is pasted as well. + * Performs a bounds check. + * @param src the pixmap to paste. + * @param srcBnds the bounds of the area of the pixmap to paste. + * @param destBnds the destination area for the paste. + */ + virtual void setPixmap(const IMG_PixmapRGBA32& src, const GEN_Rect& srcBnds, const GEN_Rect& destBnds); + + /** + * Blends an area of a pixmap into this pixmap. + * Blends an area of the given pixmap centered at the given coordinates into this pixmap. + * The alpha information in the given image is used to blend. + * Performs a bounds check. + * @param src the pixmap to paste. + * @param srcBnds the bounds of the area of the pixmap to paste. + * @param destBnds the destination area for the paste. + */ + virtual void blendPixmap(const IMG_PixmapRGBA32& src, const GEN_Rect& srcBnds, const GEN_Rect& destBnds); + +protected: + /** + * Returns pointer to the pixel. + * Returns a pointer of TPixelPtr type to the pixel at the requested coordinates. + * Does not perform a bounds check! + * @param x column address of the pixel. + * @param y row address of the pixel. + * @return the pointer calculated. + */ + inline TPixelPtr getPixelPtr(GEN_TUns32 x, GEN_TUns32 y) const; + + /** + * Returns the pixel value of a color. + * @param c the color to convert + * @return the pixel value calculated + */ + inline TPixelRGBA32 getPixelValue(const IMG_ColorRGBA& c) const; + + /** + * Returns the color of from a pixel value. + * @param p the pixel value + * @param c the color calculated + */ + inline void getColor(TPixelRGBA32 p, IMG_ColorRGBA& c) const; + +protected: + /** "Save" memory pointer. */ + IMG_MemPtr<TPixelRGBA32> m_pixels; + + /** Pointer to the first pixel. */ + TPixelPtr m_pixelsBase; +}; + + +inline IMG_PixmapRGBA32::TPixelPtr IMG_PixmapRGBA32::getPixelPtr(GEN_TUns32 x, GEN_TUns32 y) const +{ + return (TPixelPtr) (((GEN_TUns8*)m_pixelsBase) + (y*m_rowBytes) + (x<<2)); +} + + +inline IMG_PixmapRGBA32::TPixelRGBA32 IMG_PixmapRGBA32::getPixelValue(const IMG_ColorRGBA& c) const +{ +#if 0 + // Obtain pixel value through shifting + TPixelRGBA32 p = ((TPixelRGBA32) (((float) 0xFF) * c.m_a)) << 24; + p |= ((TPixelRGBA32) (((float) 0xFF) * c.m_b)) << 16; + p |= ((TPixelRGBA32) (((float) 0xFF) * c.m_g)) << 8; + p |= ((TPixelRGBA32) (((float) 0xFF) * c.m_r)); + return p; +#else + // Obtain pixel value through byte indexing + TPixelRGBA32 pixel; + GEN_TUns8* bytes = (GEN_TUns8*)&pixel; + bytes[bi_r] = (GEN_TUns8)(((float) 0xFF) * c.m_r); + bytes[bi_g] = (GEN_TUns8)(((float) 0xFF) * c.m_g); + bytes[bi_b] = (GEN_TUns8)(((float) 0xFF) * c.m_b); + bytes[bi_a] = (GEN_TUns8)(((float) 0xFF) * c.m_a); + return pixel; +#endif +} + +inline void IMG_PixmapRGBA32::getColor(TPixelRGBA32 p, IMG_ColorRGBA& c) const +{ +#if 0 + // Obtain color value through shifting + c.m_a = ((float) ((p >> 24) & 0x00FF)) / ((float) 0xFF); + c.m_b = ((float) ((p >> 16) & 0x00FF)) / ((float) 0xFF); + c.m_g = ((float) ((p >> 8) & 0x00FF)) / ((float) 0xFF); + c.m_r = ((float) ( p & 0x00FF)) / ((float) 0xFF); +#else + // Obtain color value through byte indexing + GEN_TUns8* bytes = (GEN_TUns8*)&p; + c.m_r = ((float)bytes[bi_r]) / ((float) 0xFF); + c.m_g = ((float)bytes[bi_g]) / ((float) 0xFF); + c.m_b = ((float)bytes[bi_b]) / ((float) 0xFF); + c.m_a = ((float)bytes[bi_a]) / ((float) 0xFF); +#endif +} + +#endif // _H_IMG_PixmapRGBA32
\ No newline at end of file diff --git a/intern/img/intern/IMG_Color.h b/intern/img/intern/IMG_Color.h new file mode 100644 index 00000000000..9e6ef5c74fc --- /dev/null +++ b/intern/img/intern/IMG_Color.h @@ -0,0 +1,144 @@ +/** + * $Id$ + * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. The Blender + * Foundation also sells licenses for use in proprietary software under + * the Blender License. See http://www.blender.org/BL/ for information + * about this. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL/BL DUAL LICENSE BLOCK ***** + */ + +/** + + * $Id$ + * Copyright (C) 2001 NaN Technologies B.V. + * Declaration of an RGB color with red, green and blue components. + * Declaration of an RGBA color with red, green, blue and alpha components. + * Components are stored as floats. + * @author Maarten Gribnau + * @date March 7, 2001 + */ + +#ifndef _H_IMG_Color +#define _H_IMG_Color + +class IMG_ColorRGBA; + + +class IMG_ColorRGB { +public: + /** + * Constructs a color with the given values. + * @param r requested red component of the color + * @param g requested green component of the color + * @param b requested blue component of the color + */ + IMG_ColorRGB(float r=0, float g=0, float b=0) + : m_r(r), m_g(g), m_b(b) {} + + /** + * Copy constructor. + * @param c the color to copy. + */ + IMG_ColorRGB(const IMG_ColorRGB& c) + : m_r(c.m_r), m_g(c.m_g), m_b(c.m_b) {} + + /** + * Constructs a color without alpha from one with. + * @param c the color to copy. + */ + inline IMG_ColorRGB(const IMG_ColorRGBA& c); + + /** Red component of the color */ + float m_r; + /** Green component of the color */ + float m_g; + /** Blue component of the color */ + float m_b; +}; + + +class IMG_ColorRGBA { +public: + /** + * Constructs a color with the given values. + * @param r requested red component of the color + * @param g requested green component of the color + * @param b requested blue component of the color + * @param a requested alpha component of the color + */ + IMG_ColorRGBA(float r=0, float g=0, float b=0, float a=0) + : m_r(r), m_g(g), m_b(b), m_a(a) {} + + /** + * Copy constructor. + * @param c the color to copy. + */ + IMG_ColorRGBA(const IMG_ColorRGBA& c) + : m_r(c.m_r), m_g(c.m_g), m_b(c.m_b), m_a(c.m_a) {} + + /** + * Constructs a color with alpha from one without. + * @param c the color to copy. + */ + IMG_ColorRGBA(const IMG_ColorRGB& c) + : m_r(c.m_r), m_g(c.m_g), m_b(c.m_b), m_a(0) {} + + /** + * Blends the given color with this color. + * Uses the alpha of the given color for blending. + * The alpha of this color is left untouched. + * @param c the color to blend + */ + inline void blendColor(const IMG_ColorRGBA& c); + + /** Red component of the color */ + float m_r; + /** Green component of the color */ + float m_g; + /** Blue component of the color */ + float m_b; + /** Alpha component of the color */ + float m_a; +}; + +inline IMG_ColorRGB::IMG_ColorRGB(const IMG_ColorRGBA& c) + : m_r(c.m_r), m_g(c.m_g), m_b(c.m_b) {} + +inline void IMG_ColorRGBA::blendColor(const IMG_ColorRGBA& c) +{ + float r1 = 1 - c.m_a; // The reverse of alpha +#if IMG_REVERSED_ALPHA + m_r = c.m_a * m_r + r1 * c.m_r; + m_g = c.m_a * m_g + r1 * c.m_g; + m_b = c.m_a * m_b + r1 * c.m_b; +#else + m_r = r1 * m_r + c.m_a * c.m_r; + m_g = r1 * m_g + c.m_a * c.m_g; + m_b = r1 * m_b + c.m_a * c.m_b; +#endif +} + + +#endif // _H_IMG_Color
\ No newline at end of file diff --git a/intern/img/intern/IMG_MemPtr.h b/intern/img/intern/IMG_MemPtr.h new file mode 100644 index 00000000000..e81a5b5c873 --- /dev/null +++ b/intern/img/intern/IMG_MemPtr.h @@ -0,0 +1,117 @@ +/** + * $Id$ + * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. The Blender + * Foundation also sells licenses for use in proprietary software under + * the Blender License. See http://www.blender.org/BL/ for information + * about this. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL/BL DUAL LICENSE BLOCK ***** + */ + +/** + + * @author Maarten Gribnau + * @date March 8, 2001 + */ + +#ifndef _H_IMG_MemPtr +#define _H_IMG_MemPtr + +#include <stddef.h> + +/** + * A memory pointer for memory of any type. + * It can be used to avoid memory leaks when allocating memory in constructors. + * @author Maarten Gribnau + * @date March 8, 2001 + */ + +template <class T> class IMG_MemPtr { +public: + /** Pointer to the memory */ + T* m_p; + bool m_owned; + + /** + * Size exception. + * A size exception is thrown when an invalid width and/or height is passed. + */ + class Size {}; + /** + * Memory exception. + * A size exception is thrown when a there is not enough memory to allocate the image. + */ + class Memory {}; + + /** + * Constructs a memory pointer. + * @param s requested size of the pointer + * @throw <Size> when an invalid width and/or height is passed. + * @throw <Memory> when a there is not enough memory to allocate the image. + */ + IMG_MemPtr(size_t s) + : m_p(0), m_owned(false) + { + if (s > 0) { + m_p = new T[s]; + if (!m_p) { + throw Memory(); + } + m_owned = true; + } + else { + throw Size(); + } + } + + /** + * Constructs a memory pointer from a pointer. + * @param p the pointer + * @param s requested size of the pointer + * @throw <Size> when an invalid width and/or height is passed. + */ + IMG_MemPtr(void* p, size_t s) + : m_p(0), m_owned(false) + { + if (p && (s > 0)) { + m_p = (T*)p; + } + else { + throw Size(); + } + } + + /** + * Destructor. + */ + ~IMG_MemPtr() { if (m_p && m_owned) { delete [] m_p; m_p = 0; } } + + /** + * Access to the memory. + * @return pointer to the memory + */ + operator T*() { return m_p; } +}; + +#endif // _H_IMG_MemPtr
\ No newline at end of file diff --git a/intern/img/intern/IMG_Pixmap.cpp b/intern/img/intern/IMG_Pixmap.cpp new file mode 100644 index 00000000000..74888647b75 --- /dev/null +++ b/intern/img/intern/IMG_Pixmap.cpp @@ -0,0 +1,85 @@ +/** + * $Id$ + * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. The Blender + * Foundation also sells licenses for use in proprietary software under + * the Blender License. See http://www.blender.org/BL/ for information + * about this. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL/BL DUAL LICENSE BLOCK ***** + */ + +/** + + * $Id$ + * Copyright (C) 2001 NaN Technologies B.V. + * Base class for pixmaps. + * @author Maarten Gribnau + * @date March 6, 2001 + */ + + +#include "../extern/IMG_Pixmap.h" + + +IMG_Pixmap::IMG_Pixmap() +{ + m_width = 0; + m_height = 0; + m_rowBytes = 0; + m_pixelSize = 0; + m_pixelType = kPixelTypeUnknown; +/* +#if OS_MACINTOSH + bitOrder = kQ3EndianBig; + byteOrder = kQ3EndianBig; +#else + bitOrder = kQ3EndianLittle; + byteOrder = kQ3EndianLittle; +#endif +*/ +} + + +IMG_Pixmap::IMG_Pixmap(GEN_TUns32 width, GEN_TUns32 height) +{ + m_width = width; + m_height = height; + m_rowBytes = 0; + m_pixelSize = 0; + m_pixelType = kPixelTypeUnknown; +/* +#if OS_MACINTOSH + bitOrder = kQ3EndianBig; + byteOrder = kQ3EndianBig; +#else + bitOrder = kQ3EndianLittle; + byteOrder = kQ3EndianLittle; +#endif +*/ +} + + +IMG_Pixmap::~IMG_Pixmap() +{ +}
\ No newline at end of file diff --git a/intern/img/intern/IMG_PixmapRGBA32.cpp b/intern/img/intern/IMG_PixmapRGBA32.cpp new file mode 100644 index 00000000000..a7b70e03616 --- /dev/null +++ b/intern/img/intern/IMG_PixmapRGBA32.cpp @@ -0,0 +1,260 @@ +/** + * $Id$ + * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. The Blender + * Foundation also sells licenses for use in proprietary software under + * the Blender License. See http://www.blender.org/BL/ for information + * about this. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL/BL DUAL LICENSE BLOCK ***** + */ + +/** + + * $Id$ + * Copyright (C) 2001 NaN Technologies B.V. + * Base class for pixmaps. + * @author Maarten Gribnau + * @date March 6, 2001 + */ + + +#include "../extern/IMG_PixmapRGBA32.h" + +IMG_PixmapRGBA32::IMG_PixmapRGBA32(GEN_TUns32 width, GEN_TUns32 height) + : IMG_Pixmap(), m_pixels(width * height) +{ + m_pixelsBase = m_pixels; + m_width = width; + m_height = height; + m_rowBytes = width * sizeof(TPixelRGBA32); + m_pixelSize = 32; + m_pixelType = kPixelTypeRGBA32; +} + + +IMG_PixmapRGBA32::IMG_PixmapRGBA32(void* image, GEN_TUns32 width, GEN_TUns32 height, GEN_TUns32 rowBytes) + : IMG_Pixmap(), m_pixels(image, width * rowBytes) +{ + m_pixelsBase = m_pixels; + m_width = width; + m_height = height; + m_rowBytes = rowBytes; + m_pixelSize = 32; + m_pixelType = kPixelTypeRGBA32; +} + + +void IMG_PixmapRGBA32::fillRect(const GEN_Rect& r, const IMG_ColorRGB& c) +{ + GEN_Rect t_bnds (0, 0, m_width, m_height); // Bounds of this pixmap + GEN_Rect r_bnds (r); // Area to set + + // Determine visibility + GEN_TVisibility v = t_bnds.getVisibility(r_bnds); + if (v == GEN_kNotVisible) return; + if (v == GEN_kPartiallyVisible) { + // Clip the destination rectangle to the bounds of this pixmap + t_bnds.clip(r_bnds); + if (r_bnds.isEmpty()) { + return; + } + } + +#if 0 + // Set new pixels using shifting + // Prepare the pixel value to set + IMG_ColorRGBA ca (c); + TPixelRGBA32 pv = getPixelValue(c); + // Mask off the alpha bits + pv &= 0x00FFFFFF; //0xFFFFFF00; + + // Set the pixels in the destination rectangle + for (GEN_TInt32 y = r.m_t; y < r.m_b; y++) { + // Park pixel pointer at the start pixels + TPixelPtr desPtr = getPixelPtr(r_bnds.m_l, y); + for (GEN_TInt32 x = r.m_l; x < r.m_r; x++) { + // Set the new pixel value (retain current alpha) + *(desPtr++) = pv | ((*desPtr) & 0xFF000000); //0x000000FF); + } + } +#else + // Set new values using byte indexing + //IMG_ColorRGBA ca (c); + TPixelRGBA32 src = getPixelValue(c); + TPixelPtr desPtr; + GEN_TUns8* srcBytes = (GEN_TUns8*) &src; + + // Set the pixels in the destination rectangle + for (GEN_TInt32 y = r.m_t; y < r.m_b; y++) { + // Park pixel pointer at the start pixels + desPtr = getPixelPtr(r_bnds.m_l, y); + for (GEN_TInt32 x = r.m_l; x < r.m_r; x++) { + // Set the new pixel value (retain current alpha) + ((GEN_TUns8*)desPtr)[bi_r] = srcBytes[bi_r]; + ((GEN_TUns8*)desPtr)[bi_g] = srcBytes[bi_g]; + ((GEN_TUns8*)desPtr)[bi_b] = srcBytes[bi_b]; + desPtr++; + } + } +#endif +} + + +void IMG_PixmapRGBA32::fillRect(const GEN_Rect& r, const IMG_ColorRGBA& c) +{ + GEN_Rect t_bnds (0, 0, m_width, m_height); // Bounds of this pixmap + GEN_Rect r_bnds (r); // Area to set + + // Determine visibility + GEN_TVisibility v = t_bnds.getVisibility(r_bnds); + if (v == GEN_kNotVisible) return; + if (v == GEN_kPartiallyVisible) { + // Clip the destination rectangle to the bounds of this pixmap + t_bnds.clip(r_bnds); + if (r_bnds.isEmpty()) { + return; + } + } + + // Set the pixels in the destination rectangle + TPixelRGBA32 pixel = getPixelValue(c); + for (GEN_TInt32 y = r.m_t; y < r.m_b; y++) { + // Park pixel pointer at the start pixels + TPixelPtr desPtr = getPixelPtr(r_bnds.m_l, y); + for (GEN_TInt32 x = r.m_l; x < r.m_r; x++) { + *(desPtr++) = pixel; + } + } +} + + +void IMG_PixmapRGBA32::setPixmap(const IMG_PixmapRGBA32& src, const GEN_Rect& srcBnds, const GEN_Rect& destBnds) +{ + GEN_Rect i_bnds (srcBnds); // Bounds of input pixmap + GEN_Rect t_bnds (0, 0, m_width, m_height); // Bounds of this pixmap + GEN_Rect p_bnds (destBnds); // Bounds of the paste area + + // The next check could be removed if the caller is made responsible for handing us non-empty rectangles + if (i_bnds.isEmpty()) { + // Nothing to do + return; + } + + // Determine visibility of the paste area + GEN_TVisibility v = t_bnds.getVisibility(p_bnds); + if (v == GEN_kNotVisible) return; + if (v == GEN_kPartiallyVisible) { + // Clipping is needed + if (p_bnds.m_l < 0) { + i_bnds.m_l += -p_bnds.m_l; + p_bnds.m_l = 0; + } + if (p_bnds.m_t < 0) { + i_bnds.m_t += -p_bnds.m_t; + p_bnds.m_t = 0; + } + GEN_TInt32 d = t_bnds.getWidth(); + if (p_bnds.m_r > d) { + i_bnds.m_r -= d - p_bnds.m_r; + p_bnds.m_r = d; + } + d = t_bnds.getHeight(); + if (p_bnds.m_b > d) { + i_bnds.m_b -= d - p_bnds.m_b; + p_bnds.m_b = d; + } + } + + // Iterate through the rows + for (GEN_TInt32 r = 0; r < p_bnds.getHeight(); r++) { + // Park pixel pointers at the start pixels + TPixelPtr srcPtr = src.getPixelPtr(i_bnds.m_l, i_bnds.m_t + r); + TPixelPtr desPtr = getPixelPtr(p_bnds.m_l, p_bnds.m_t + r); + // Iterate through the columns + for (int c = 0; c < p_bnds.getWidth(); c++) { + *(desPtr++) = *(srcPtr++); + } + } +} + + +void IMG_PixmapRGBA32::blendPixmap(const IMG_PixmapRGBA32& src, const GEN_Rect& srcBnds, const GEN_Rect& destBnds) +{ + GEN_Rect i_bnds (srcBnds); // Bounds of input pixmap + GEN_Rect t_bnds (0, 0, m_width, m_height); // Bounds of this pixmap + GEN_Rect p_bnds (destBnds); // Bounds of the paste area + + // The next check could be removed if the caller is made responsible for handing us non-empty rectangles + if (i_bnds.isEmpty()) { + // Nothing to do + return; + } + + // Determine visibility of the paste area + GEN_TVisibility v = t_bnds.getVisibility(p_bnds); + if (v == GEN_kNotVisible) return; + if (v == GEN_kPartiallyVisible) { + // Clipping is needed + if (p_bnds.m_l < 0) { + i_bnds.m_l += -p_bnds.m_l; + p_bnds.m_l = 0; + } + if (p_bnds.m_t < 0) { + i_bnds.m_t += -p_bnds.m_t; + p_bnds.m_t = 0; + } + GEN_TInt32 d = t_bnds.getWidth(); + if (p_bnds.m_r > d) { + i_bnds.m_r -= p_bnds.m_r - d; + p_bnds.m_r = d; + } + d = t_bnds.getHeight(); + if (p_bnds.m_b > d) { + i_bnds.m_b -= p_bnds.m_b - d; + p_bnds.m_b = d; + } + } + + IMG_ColorRGBA srcColor; + IMG_ColorRGBA desColor; + + // Iterate through the rows + for (int r = 0; r < p_bnds.getHeight(); r++) { + // Park pixel pointers at the start pixels + TPixelPtr srcPtr = src.getPixelPtr(i_bnds.m_l, i_bnds.m_t + r); + TPixelPtr desPtr = getPixelPtr(p_bnds.m_l, p_bnds.m_t + r); + // Iterate through the columns + for (int c = 0; c < p_bnds.getWidth(); c++) { + // Retrieve colors from source and destination pixmaps + getColor(*srcPtr, srcColor); + getColor(*desPtr, desColor); + // Blend the colors + desColor.blendColor(srcColor); + // Write color back to destination pixmap + *desPtr = getPixelValue(desColor); + srcPtr++; + desPtr++; + } + } +} diff --git a/intern/img/intern/Makefile b/intern/img/intern/Makefile new file mode 100644 index 00000000000..824699f49bc --- /dev/null +++ b/intern/img/intern/Makefile @@ -0,0 +1,43 @@ +# +# $Id$ +# +# ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. The Blender +# Foundation also sells licenses for use in proprietary software under +# the Blender License. See http://www.blender.org/BL/ for information +# about this. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. +# All rights reserved. +# +# The Original Code is: all of this file. +# +# Contributor(s): none yet. +# +# ***** END GPL/BL DUAL LICENSE BLOCK ***** +# Makefile for the img library + +LIBNAME = img +DIR = $(OCGDIR)/intern/$(LIBNAME) + +include nan_compile.mk + +CCFLAGS += $(LEVEL_2_CPP_WARNINGS) + +CPPFLAGS += -I../../generic/extern +CPPFLAGS += -I../extern +CPPFLAGS += -I../intern + diff --git a/intern/img/make/msvc/img.dsp b/intern/img/make/msvc/img.dsp new file mode 100644 index 00000000000..5110bdbb200 --- /dev/null +++ b/intern/img/make/msvc/img.dsp @@ -0,0 +1,126 @@ +# Microsoft Developer Studio Project File - Name="img" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=img - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "img.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "img.mak" CFG="img - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "img - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "img - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "img - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\..\..\..\..\obj\img\windows\" +# PROP Intermediate_Dir "..\..\..\..\..\obj\img\windows\" +# PROP Target_Dir "" +LINK32=link.exe -lib +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "../../../generic/extern" /I "../extern" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "img - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\..\..\..\obj\img\windows\debug" +# PROP Intermediate_Dir "..\..\..\..\..\obj\img\windows\debug" +# PROP Target_Dir "" +LINK32=link.exe -lib +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../generic/extern" /I "../extern" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ENDIF + +# Begin Target + +# Name "img - Win32 Release" +# Name "img - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=..\..\intern\IMG_Pixmap.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\intern\IMG_PixmapRGBA32.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Group "intern" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\intern\IMG_Color.h +# End Source File +# Begin Source File + +SOURCE=..\..\intern\IMG_MemPtr.h +# End Source File +# End Group +# Begin Group "extern" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\extern\IMG_Pixmap.h +# End Source File +# Begin Source File + +SOURCE=..\..\extern\IMG_PixmapRGBA32.h +# End Source File +# End Group +# End Group +# End Target +# End Project diff --git a/intern/img/make/msvc/img.dsw b/intern/img/make/msvc/img.dsw new file mode 100644 index 00000000000..433f994ce5c --- /dev/null +++ b/intern/img/make/msvc/img.dsw @@ -0,0 +1,41 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "generic"="..\..\..\generic\make\msvc\generic.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "img"=".\img.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + |