Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/img')
-rw-r--r--intern/img/doc/Doxyfile.win747
-rw-r--r--intern/img/extern/IMG_Pixmap.h198
-rw-r--r--intern/img/extern/IMG_PixmapRGBA32.h217
-rw-r--r--intern/img/intern/IMG_Color.h144
-rw-r--r--intern/img/intern/IMG_MemPtr.h117
-rw-r--r--intern/img/intern/IMG_Pixmap.cpp85
-rw-r--r--intern/img/intern/IMG_PixmapRGBA32.cpp260
-rw-r--r--intern/img/intern/Makefile43
-rw-r--r--intern/img/make/msvc/img.dsp126
-rw-r--r--intern/img/make/msvc/img.dsw41
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>
+{{{
+}}}
+
+###############################################################################
+