diff options
author | scuri <scuri> | 2008-12-03 15:45:33 +0000 |
---|---|---|
committer | scuri <scuri> | 2008-12-03 15:45:33 +0000 |
commit | 5cb32502b777eb0dec8ec2d8a8c9714ed487b86f (patch) | |
tree | dd4da12c768ade65115f260c1d12d64aa180861b | |
parent | 41d2b4d6fbb26092580fe06cd997c238366eb532 (diff) |
*** empty log message ***
-rw-r--r-- | html/en/history.html | 2625 | ||||
-rw-r--r-- | include/im_file.h | 2 | ||||
-rw-r--r-- | include/im_format.h | 52 | ||||
-rw-r--r-- | include/im_format_raw.h | 2 | ||||
-rw-r--r-- | mak.vc8/im.sln | 7 | ||||
-rw-r--r-- | mak.vc8/im_capture.vcproj | 3 | ||||
-rw-r--r-- | mak.vc8/im_wmv.vcproj | 3 | ||||
-rw-r--r-- | src/im_file.cpp | 82 | ||||
-rw-r--r-- | src/im_fileraw.cpp | 6 | ||||
-rw-r--r-- | src/im_format.cpp | 38 | ||||
-rw-r--r-- | src/im_format_avi.cpp | 61 | ||||
-rw-r--r-- | src/im_format_bmp.cpp | 52 | ||||
-rw-r--r-- | src/im_format_ecw.cpp | 40 | ||||
-rw-r--r-- | src/im_format_gif.cpp | 49 | ||||
-rw-r--r-- | src/im_format_ico.cpp | 52 | ||||
-rw-r--r-- | src/im_format_jp2.cpp | 48 | ||||
-rw-r--r-- | src/im_format_jpeg.cpp | 49 | ||||
-rw-r--r-- | src/im_format_krn.cpp | 45 | ||||
-rw-r--r-- | src/im_format_led.cpp | 50 | ||||
-rw-r--r-- | src/im_format_pcx.cpp | 56 | ||||
-rw-r--r-- | src/im_format_png.cpp | 49 | ||||
-rw-r--r-- | src/im_format_pnm.cpp | 48 | ||||
-rw-r--r-- | src/im_format_ras.cpp | 52 | ||||
-rw-r--r-- | src/im_format_raw.cpp | 54 | ||||
-rw-r--r-- | src/im_format_sgi.cpp | 49 | ||||
-rw-r--r-- | src/im_format_tga.cpp | 57 | ||||
-rw-r--r-- | src/im_format_tiff.cpp | 47 | ||||
-rw-r--r-- | src/im_format_wmv.cpp | 65 | ||||
-rw-r--r-- | test/im_copy.cpp | 2 | ||||
-rw-r--r-- | test/im_copy.vcproj | 160 |
30 files changed, 3041 insertions, 864 deletions
diff --git a/html/en/history.html b/html/en/history.html index 6030df2..46b7874 100644 --- a/html/en/history.html +++ b/html/en/history.html @@ -1,361 +1,2280 @@ -<!doctype HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> +<html xmlns:v="urn:schemas-microsoft-com:vml" +xmlns:o="urn:schemas-microsoft-com:office:office" +xmlns:w="urn:schemas-microsoft-com:office:word" +xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" +xmlns="http://www.w3.org/TR/REC-html40"> <head> +<meta http-equiv=Content-Type content="text/html; charset=windows-1252"> +<meta name=ProgId content=Word.Document> +<meta name=Generator content="Microsoft Word 12"> +<meta name=Originator content="Microsoft Word 12"> +<link rel=File-List href="history_arquivos/filelist.xml"> <title>History</title> -<meta http-equiv="Content-Language" content="en-us"> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> -<link rel="stylesheet" type="text/css" href="../style.css"> +<!--[if gte mso 9]><xml> + <o:DocumentProperties> + <o:Author>scuri</o:Author> + <o:LastAuthor>scuri</o:LastAuthor> + <o:Revision>2</o:Revision> + <o:TotalTime>1</o:TotalTime> + <o:Created>2008-12-03T15:48:00Z</o:Created> + <o:LastSaved>2008-12-03T15:49:00Z</o:LastSaved> + <o:Pages>3</o:Pages> + <o:Words>2349</o:Words> + <o:Characters>12687</o:Characters> + <o:Lines>105</o:Lines> + <o:Paragraphs>30</o:Paragraphs> + <o:CharactersWithSpaces>15006</o:CharactersWithSpaces> + <o:Version>12.00</o:Version> + </o:DocumentProperties> +</xml><![endif]--> +<link rel=themeData href="history_arquivos/themedata.thmx"> +<link rel=colorSchemeMapping href="history_arquivos/colorschememapping.xml"> +<!--[if gte mso 9]><xml> + <w:WordDocument> + <w:Zoom>125</w:Zoom> + <w:SpellingState>Clean</w:SpellingState> + <w:GrammarState>Clean</w:GrammarState> + <w:TrackMoves>false</w:TrackMoves> + <w:TrackFormatting/> + <w:HyphenationZone>21</w:HyphenationZone> + <w:ValidateAgainstSchemas/> + <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> + <w:IgnoreMixedContent>false</w:IgnoreMixedContent> + <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> + <w:DoNotPromoteQF/> + <w:LidThemeOther>PT-BR</w:LidThemeOther> + <w:LidThemeAsian>X-NONE</w:LidThemeAsian> + <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> + <w:Compatibility> + <w:BreakWrappedTables/> + <w:SnapToGridInCell/> + <w:WrapTextWithPunct/> + <w:UseAsianBreakRules/> + <w:DontGrowAutofit/> + <w:SplitPgBreakAndParaMark/> + <w:DontVertAlignCellWithSp/> + <w:DontBreakConstrainedForcedTables/> + <w:DontVertAlignInTxbx/> + <w:Word11KerningPairs/> + <w:CachedColBalance/> + </w:Compatibility> + <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> + <m:mathPr> + <m:mathFont m:val="Cambria Math"/> + <m:brkBin m:val="before"/> + <m:brkBinSub m:val="--"/> + <m:smallFrac m:val="off"/> + <m:dispDef/> + <m:lMargin m:val="0"/> + <m:rMargin m:val="0"/> + <m:defJc m:val="centerGroup"/> + <m:wrapIndent m:val="1440"/> + <m:intLim m:val="subSup"/> + <m:naryLim m:val="undOvr"/> + </m:mathPr></w:WordDocument> +</xml><![endif]--><!--[if gte mso 9]><xml> + <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" + DefSemiHidden="true" DefQFormat="false" DefPriority="99" + LatentStyleCount="267"> + <w:LsdException Locked="false" Priority="0" SemiHidden="false" + UnhideWhenUsed="false" QFormat="true" Name="Normal"/> + <w:LsdException Locked="false" Priority="9" SemiHidden="false" + UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> + <w:LsdException Locked="false" Priority="9" SemiHidden="false" + UnhideWhenUsed="false" QFormat="true" Name="heading 2"/> + <w:LsdException Locked="false" Priority="9" SemiHidden="false" + UnhideWhenUsed="false" QFormat="true" Name="heading 3"/> + <w:LsdException Locked="false" Priority="9" SemiHidden="false" + UnhideWhenUsed="false" QFormat="true" Name="heading 4"/> + <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> + <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> + <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> + <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> + <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> + <w:LsdException Locked="false" Priority="39" Name="toc 1"/> + <w:LsdException Locked="false" Priority="39" Name="toc 2"/> + <w:LsdException Locked="false" Priority="39" Name="toc 3"/> + <w:LsdException Locked="false" Priority="39" Name="toc 4"/> + <w:LsdException Locked="false" Priority="39" Name="toc 5"/> + <w:LsdException Locked="false" Priority="39" Name="toc 6"/> + <w:LsdException Locked="false" Priority="39" Name="toc 7"/> + <w:LsdException Locked="false" Priority="39" Name="toc 8"/> + <w:LsdException Locked="false" Priority="39" Name="toc 9"/> + <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> + <w:LsdException Locked="false" Priority="10" SemiHidden="false" + UnhideWhenUsed="false" QFormat="true" Name="Title"/> + <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> + <w:LsdException Locked="false" Priority="11" SemiHidden="false" + UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> + <w:LsdException Locked="false" Priority="22" SemiHidden="false" + UnhideWhenUsed="false" QFormat="true" Name="Strong"/> + <w:LsdException Locked="false" Priority="20" SemiHidden="false" + UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> + <w:LsdException Locked="false" Priority="59" SemiHidden="false" + UnhideWhenUsed="false" Name="Table Grid"/> + <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> + <w:LsdException Locked="false" Priority="1" SemiHidden="false" + UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> + <w:LsdException Locked="false" Priority="60" SemiHidden="false" + UnhideWhenUsed="false" Name="Light Shading"/> + <w:LsdException Locked="false" Priority="61" SemiHidden="false" + UnhideWhenUsed="false" Name="Light List"/> + <w:LsdException Locked="false" Priority="62" SemiHidden="false" + UnhideWhenUsed="false" Name="Light Grid"/> + <w:LsdException Locked="false" Priority="63" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Shading 1"/> + <w:LsdException Locked="false" Priority="64" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Shading 2"/> + <w:LsdException Locked="false" Priority="65" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium List 1"/> + <w:LsdException Locked="false" Priority="66" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium List 2"/> + <w:LsdException Locked="false" Priority="67" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 1"/> + <w:LsdException Locked="false" Priority="68" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 2"/> + <w:LsdException Locked="false" Priority="69" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 3"/> + <w:LsdException Locked="false" Priority="70" SemiHidden="false" + UnhideWhenUsed="false" Name="Dark List"/> + <w:LsdException Locked="false" Priority="71" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful Shading"/> + <w:LsdException Locked="false" Priority="72" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful List"/> + <w:LsdException Locked="false" Priority="73" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful Grid"/> + <w:LsdException Locked="false" Priority="60" SemiHidden="false" + UnhideWhenUsed="false" Name="Light Shading Accent 1"/> + <w:LsdException Locked="false" Priority="61" SemiHidden="false" + UnhideWhenUsed="false" Name="Light List Accent 1"/> + <w:LsdException Locked="false" Priority="62" SemiHidden="false" + UnhideWhenUsed="false" Name="Light Grid Accent 1"/> + <w:LsdException Locked="false" Priority="63" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> + <w:LsdException Locked="false" Priority="64" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> + <w:LsdException Locked="false" Priority="65" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> + <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> + <w:LsdException Locked="false" Priority="34" SemiHidden="false" + UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> + <w:LsdException Locked="false" Priority="29" SemiHidden="false" + UnhideWhenUsed="false" QFormat="true" Name="Quote"/> + <w:LsdException Locked="false" Priority="30" SemiHidden="false" + UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> + <w:LsdException Locked="false" Priority="66" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> + <w:LsdException Locked="false" Priority="67" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> + <w:LsdException Locked="false" Priority="68" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> + <w:LsdException Locked="false" Priority="69" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> + <w:LsdException Locked="false" Priority="70" SemiHidden="false" + UnhideWhenUsed="false" Name="Dark List Accent 1"/> + <w:LsdException Locked="false" Priority="71" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> + <w:LsdException Locked="false" Priority="72" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful List Accent 1"/> + <w:LsdException Locked="false" Priority="73" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> + <w:LsdException Locked="false" Priority="60" SemiHidden="false" + UnhideWhenUsed="false" Name="Light Shading Accent 2"/> + <w:LsdException Locked="false" Priority="61" SemiHidden="false" + UnhideWhenUsed="false" Name="Light List Accent 2"/> + <w:LsdException Locked="false" Priority="62" SemiHidden="false" + UnhideWhenUsed="false" Name="Light Grid Accent 2"/> + <w:LsdException Locked="false" Priority="63" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> + <w:LsdException Locked="false" Priority="64" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> + <w:LsdException Locked="false" Priority="65" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> + <w:LsdException Locked="false" Priority="66" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> + <w:LsdException Locked="false" Priority="67" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> + <w:LsdException Locked="false" Priority="68" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> + <w:LsdException Locked="false" Priority="69" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> + <w:LsdException Locked="false" Priority="70" SemiHidden="false" + UnhideWhenUsed="false" Name="Dark List Accent 2"/> + <w:LsdException Locked="false" Priority="71" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> + <w:LsdException Locked="false" Priority="72" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful List Accent 2"/> + <w:LsdException Locked="false" Priority="73" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> + <w:LsdException Locked="false" Priority="60" SemiHidden="false" + UnhideWhenUsed="false" Name="Light Shading Accent 3"/> + <w:LsdException Locked="false" Priority="61" SemiHidden="false" + UnhideWhenUsed="false" Name="Light List Accent 3"/> + <w:LsdException Locked="false" Priority="62" SemiHidden="false" + UnhideWhenUsed="false" Name="Light Grid Accent 3"/> + <w:LsdException Locked="false" Priority="63" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> + <w:LsdException Locked="false" Priority="64" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> + <w:LsdException Locked="false" Priority="65" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> + <w:LsdException Locked="false" Priority="66" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> + <w:LsdException Locked="false" Priority="67" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> + <w:LsdException Locked="false" Priority="68" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> + <w:LsdException Locked="false" Priority="69" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> + <w:LsdException Locked="false" Priority="70" SemiHidden="false" + UnhideWhenUsed="false" Name="Dark List Accent 3"/> + <w:LsdException Locked="false" Priority="71" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> + <w:LsdException Locked="false" Priority="72" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful List Accent 3"/> + <w:LsdException Locked="false" Priority="73" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> + <w:LsdException Locked="false" Priority="60" SemiHidden="false" + UnhideWhenUsed="false" Name="Light Shading Accent 4"/> + <w:LsdException Locked="false" Priority="61" SemiHidden="false" + UnhideWhenUsed="false" Name="Light List Accent 4"/> + <w:LsdException Locked="false" Priority="62" SemiHidden="false" + UnhideWhenUsed="false" Name="Light Grid Accent 4"/> + <w:LsdException Locked="false" Priority="63" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> + <w:LsdException Locked="false" Priority="64" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> + <w:LsdException Locked="false" Priority="65" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> + <w:LsdException Locked="false" Priority="66" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> + <w:LsdException Locked="false" Priority="67" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> + <w:LsdException Locked="false" Priority="68" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> + <w:LsdException Locked="false" Priority="69" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> + <w:LsdException Locked="false" Priority="70" SemiHidden="false" + UnhideWhenUsed="false" Name="Dark List Accent 4"/> + <w:LsdException Locked="false" Priority="71" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> + <w:LsdException Locked="false" Priority="72" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful List Accent 4"/> + <w:LsdException Locked="false" Priority="73" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> + <w:LsdException Locked="false" Priority="60" SemiHidden="false" + UnhideWhenUsed="false" Name="Light Shading Accent 5"/> + <w:LsdException Locked="false" Priority="61" SemiHidden="false" + UnhideWhenUsed="false" Name="Light List Accent 5"/> + <w:LsdException Locked="false" Priority="62" SemiHidden="false" + UnhideWhenUsed="false" Name="Light Grid Accent 5"/> + <w:LsdException Locked="false" Priority="63" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> + <w:LsdException Locked="false" Priority="64" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> + <w:LsdException Locked="false" Priority="65" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> + <w:LsdException Locked="false" Priority="66" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> + <w:LsdException Locked="false" Priority="67" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> + <w:LsdException Locked="false" Priority="68" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> + <w:LsdException Locked="false" Priority="69" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> + <w:LsdException Locked="false" Priority="70" SemiHidden="false" + UnhideWhenUsed="false" Name="Dark List Accent 5"/> + <w:LsdException Locked="false" Priority="71" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> + <w:LsdException Locked="false" Priority="72" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful List Accent 5"/> + <w:LsdException Locked="false" Priority="73" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> + <w:LsdException Locked="false" Priority="60" SemiHidden="false" + UnhideWhenUsed="false" Name="Light Shading Accent 6"/> + <w:LsdException Locked="false" Priority="61" SemiHidden="false" + UnhideWhenUsed="false" Name="Light List Accent 6"/> + <w:LsdException Locked="false" Priority="62" SemiHidden="false" + UnhideWhenUsed="false" Name="Light Grid Accent 6"/> + <w:LsdException Locked="false" Priority="63" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> + <w:LsdException Locked="false" Priority="64" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> + <w:LsdException Locked="false" Priority="65" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> + <w:LsdException Locked="false" Priority="66" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> + <w:LsdException Locked="false" Priority="67" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> + <w:LsdException Locked="false" Priority="68" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> + <w:LsdException Locked="false" Priority="69" SemiHidden="false" + UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> + <w:LsdException Locked="false" Priority="70" SemiHidden="false" + UnhideWhenUsed="false" Name="Dark List Accent 6"/> + <w:LsdException Locked="false" Priority="71" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> + <w:LsdException Locked="false" Priority="72" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful List Accent 6"/> + <w:LsdException Locked="false" Priority="73" SemiHidden="false" + UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> + <w:LsdException Locked="false" Priority="19" SemiHidden="false" + UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> + <w:LsdException Locked="false" Priority="21" SemiHidden="false" + UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> + <w:LsdException Locked="false" Priority="31" SemiHidden="false" + UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> + <w:LsdException Locked="false" Priority="32" SemiHidden="false" + UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> + <w:LsdException Locked="false" Priority="33" SemiHidden="false" + UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> + <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> + <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> + </w:LatentStyles> +</xml><![endif]--> +<link rel=Stylesheet type="text/css" media=all href="../style.css"> +<style> +<!-- + /* Font Definitions */ + @font-face + {font-family:Wingdings; + panose-1:5 0 0 0 0 0 0 0 0 0; + mso-font-charset:2; + mso-generic-font-family:auto; + mso-font-pitch:variable; + mso-font-signature:0 268435456 0 0 -2147483648 0;} +@font-face + {font-family:"Cambria Math"; + panose-1:0 0 0 0 0 0 0 0 0 0; + mso-font-charset:1; + mso-generic-font-family:roman; + mso-font-format:other; + mso-font-pitch:variable; + mso-font-signature:0 0 0 0 0 0;} +@font-face + {font-family:Consolas; + panose-1:2 11 6 9 2 2 4 3 2 4; + mso-font-charset:0; + mso-generic-font-family:roman; + mso-font-format:other; + mso-font-pitch:auto; + mso-font-signature:0 0 0 0 0 0;} + /* Style Definitions */ + p.MsoNormal, li.MsoNormal, div.MsoNormal + {mso-style-unhide:no; + mso-style-qformat:yes; + mso-style-parent:""; + margin:0cm; + margin-bottom:.0001pt; + line-height:normal; + mso-pagination:widow-orphan; + font-size:12.0pt; + font-family:"Times New Roman","serif"; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:minor-fareast;} +h1 + {mso-style-priority:9; + mso-style-unhide:no; + mso-style-qformat:yes; + mso-style-link:"Título 1 Char"; + mso-margin-top-alt:auto; + margin-right:0cm; + mso-margin-bottom-alt:auto; + margin-left:0cm; + text-align:center; + line-height:normal; + mso-pagination:widow-orphan; + mso-outline-level:1; + font-size:24.0pt; + font-family:"Times New Roman","serif"; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:minor-fareast; + font-weight:bold;} +h2 + {mso-style-priority:9; + mso-style-unhide:no; + mso-style-qformat:yes; + mso-style-link:"Título 2 Char"; + mso-margin-top-alt:auto; + margin-right:0cm; + mso-margin-bottom-alt:auto; + margin-left:0cm; + line-height:normal; + mso-pagination:widow-orphan; + mso-outline-level:2; + font-size:18.0pt; + font-family:"Times New Roman","serif"; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:minor-fareast; + font-weight:bold;} +h3 + {mso-style-priority:9; + mso-style-unhide:no; + mso-style-qformat:yes; + mso-style-link:"Título 3 Char"; + mso-margin-top-alt:auto; + margin-right:0cm; + mso-margin-bottom-alt:auto; + margin-left:0cm; + line-height:normal; + mso-pagination:widow-orphan; + mso-outline-level:3; + background:#E1E1E1; + border:none; + mso-border-alt:solid gray .75pt; + padding:0cm; + mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt; + font-size:13.5pt; + font-family:"Times New Roman","serif"; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:minor-fareast; + font-weight:bold;} +h4 + {mso-style-priority:9; + mso-style-unhide:no; + mso-style-qformat:yes; + mso-style-link:"Título 4 Char"; + mso-margin-top-alt:auto; + margin-right:24.0pt; + mso-margin-bottom-alt:auto; + margin-left:24.0pt; + line-height:normal; + mso-pagination:widow-orphan; + mso-outline-level:4; + background:#E1E1E1; + font-size:12.0pt; + font-family:"Times New Roman","serif"; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:minor-fareast; + font-weight:bold;} +p + {mso-style-noshow:yes; + mso-style-priority:99; + mso-margin-top-alt:auto; + margin-right:0cm; + mso-margin-bottom-alt:auto; + mso-pagination:widow-orphan; + font-size:12.0pt; + font-family:"Times New Roman","serif"; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:minor-fareast;} +pre + {mso-style-noshow:yes; + mso-style-priority:99; + mso-style-link:"Pré-formatação HTML Char"; + margin-top:0cm; + margin-right:36.0pt; + margin-bottom:0cm; + margin-left:36.0pt; + margin-bottom:.0001pt; + line-height:125%; + mso-pagination:widow-orphan; + tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; + background:#CEE7FF; + border:none; + mso-border-alt:solid #62A0FF .75pt; + padding:0cm; + mso-padding-alt:8.0pt 8.0pt 8.0pt 8.0pt; + font-size:11.0pt; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:minor-fareast;} +span.Ttulo1Char + {mso-style-name:"Título 1 Char"; + mso-style-priority:9; + mso-style-unhide:no; + mso-style-locked:yes; + mso-style-link:"Título 1"; + mso-ansi-font-size:14.0pt; + mso-bidi-font-size:14.0pt; + font-family:"Cambria","serif"; + mso-ascii-font-family:Cambria; + mso-ascii-theme-font:major-latin; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:major-fareast; + mso-hansi-font-family:Cambria; + mso-hansi-theme-font:major-latin; + mso-bidi-font-family:"Times New Roman"; + mso-bidi-theme-font:major-bidi; + color:#365F91; + mso-themecolor:accent1; + mso-themeshade:191; + font-weight:bold;} +span.Ttulo2Char + {mso-style-name:"Título 2 Char"; + mso-style-noshow:yes; + mso-style-priority:9; + mso-style-unhide:no; + mso-style-locked:yes; + mso-style-link:"Título 2"; + mso-ansi-font-size:13.0pt; + mso-bidi-font-size:13.0pt; + font-family:"Cambria","serif"; + mso-ascii-font-family:Cambria; + mso-ascii-theme-font:major-latin; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:major-fareast; + mso-hansi-font-family:Cambria; + mso-hansi-theme-font:major-latin; + mso-bidi-font-family:"Times New Roman"; + mso-bidi-theme-font:major-bidi; + color:#4F81BD; + mso-themecolor:accent1; + font-weight:bold;} +span.Ttulo3Char + {mso-style-name:"Título 3 Char"; + mso-style-noshow:yes; + mso-style-priority:9; + mso-style-unhide:no; + mso-style-locked:yes; + mso-style-link:"Título 3"; + mso-ansi-font-size:12.0pt; + mso-bidi-font-size:12.0pt; + font-family:"Cambria","serif"; + mso-ascii-font-family:Cambria; + mso-ascii-theme-font:major-latin; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:major-fareast; + mso-hansi-font-family:Cambria; + mso-hansi-theme-font:major-latin; + mso-bidi-font-family:"Times New Roman"; + mso-bidi-theme-font:major-bidi; + color:#4F81BD; + mso-themecolor:accent1; + font-weight:bold;} +span.Ttulo4Char + {mso-style-name:"Título 4 Char"; + mso-style-noshow:yes; + mso-style-priority:9; + mso-style-unhide:no; + mso-style-locked:yes; + mso-style-link:"Título 4"; + mso-ansi-font-size:12.0pt; + mso-bidi-font-size:12.0pt; + font-family:"Cambria","serif"; + mso-ascii-font-family:Cambria; + mso-ascii-theme-font:major-latin; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:major-fareast; + mso-hansi-font-family:Cambria; + mso-hansi-theme-font:major-latin; + mso-bidi-font-family:"Times New Roman"; + mso-bidi-theme-font:major-bidi; + color:#4F81BD; + mso-themecolor:accent1; + font-weight:bold; + font-style:italic;} +span.Pr-formataoHTMLChar + {mso-style-name:"Pré-formatação HTML Char"; + mso-style-noshow:yes; + mso-style-priority:99; + mso-style-unhide:no; + mso-style-locked:yes; + mso-style-link:"Pré-formatação HTML"; + font-family:"Consolas","serif"; + mso-ascii-font-family:Consolas; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:minor-fareast; + mso-hansi-font-family:Consolas;} +p.info, li.info, div.info + {mso-style-name:info; + mso-style-unhide:no; + mso-margin-top-alt:auto; + margin-right:0cm; + mso-margin-bottom-alt:auto; + margin-left:36.0pt; + mso-pagination:widow-orphan; + font-size:12.0pt; + font-family:"Times New Roman","serif"; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:minor-fareast;} +p.hometitle, li.hometitle, div.hometitle + {mso-style-name:hometitle; + mso-style-unhide:no; + mso-margin-top-alt:auto; + margin-right:0cm; + mso-margin-bottom-alt:auto; + text-align:center; + mso-pagination:widow-orphan; + font-size:36.0pt; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:minor-fareast; + font-weight:bold;} +p.homedescription, li.homedescription, div.homedescription + {mso-style-name:homedescription; + mso-style-unhide:no; + mso-margin-top-alt:auto; + margin-right:0cm; + mso-margin-bottom-alt:auto; + text-align:center; + mso-pagination:widow-orphan; + font-size:20.0pt; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:minor-fareast;} +p.homeversion, li.homeversion, div.homeversion + {mso-style-name:homeversion; + mso-style-unhide:no; + margin:7.5pt; + text-align:center; + mso-pagination:widow-orphan; + font-size:16.0pt; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:minor-fareast;} +span.SpellE + {mso-style-name:""; + mso-spl-e:yes;} +span.GramE + {mso-style-name:""; + mso-gram-e:yes;} +.MsoChpDefault + {mso-style-type:export-only; + mso-default-props:yes; + font-size:10.0pt; + mso-ansi-font-size:10.0pt; + mso-bidi-font-size:10.0pt;} +@page Section1 + {size:595.3pt 841.9pt; + margin:70.85pt 3.0cm 70.85pt 3.0cm; + mso-header-margin:35.4pt; + mso-footer-margin:35.4pt; + mso-paper-source:0;} +div.Section1 + {page:Section1;} + /* List Definitions */ + @list l0 + {mso-list-id:248278118; + mso-list-template-ids:-2039334700;} +@list l0:level1 + {mso-level-number-format:bullet; + mso-level-text:\F0B7; + mso-level-tab-stop:36.0pt; + mso-level-number-position:left; + text-indent:-18.0pt; + mso-ansi-font-size:10.0pt; + font-family:Symbol;} +@list l1 + {mso-list-id:691953545; + mso-list-template-ids:-600932866;} +@list l1:level1 + {mso-level-number-format:bullet; + mso-level-text:\F0B7; + mso-level-tab-stop:36.0pt; + mso-level-number-position:left; + text-indent:-18.0pt; + mso-ansi-font-size:10.0pt; + font-family:Symbol;} +@list l2 + {mso-list-id:1174102256; + mso-list-template-ids:1571087114;} +@list l2:level1 + {mso-level-number-format:bullet; + mso-level-text:\F0B7; + mso-level-tab-stop:36.0pt; + mso-level-number-position:left; + text-indent:-18.0pt; + mso-ansi-font-size:10.0pt; + font-family:Symbol;} +@list l3 + {mso-list-id:1320421079; + mso-list-template-ids:1204459546;} +@list l3:level1 + {mso-level-number-format:bullet; + mso-level-text:\F0B7; + mso-level-tab-stop:36.0pt; + mso-level-number-position:left; + text-indent:-18.0pt; + mso-ansi-font-size:10.0pt; + font-family:Symbol;} +@list l4 + {mso-list-id:1384476858; + mso-list-template-ids:-1023539112;} +@list l4:level1 + {mso-level-number-format:bullet; + mso-level-text:\F0B7; + mso-level-tab-stop:36.0pt; + mso-level-number-position:left; + text-indent:-18.0pt; + mso-ansi-font-size:10.0pt; + font-family:Symbol;} +@list l5 + {mso-list-id:1425105138; + mso-list-template-ids:-408143372;} +@list l5:level1 + {mso-level-number-format:bullet; + mso-level-text:\F0B7; + mso-level-tab-stop:36.0pt; + mso-level-number-position:left; + text-indent:-18.0pt; + mso-ansi-font-size:10.0pt; + font-family:Symbol;} +ol + {margin-bottom:0cm;} +ul + {margin-bottom:0cm;} +--> +</style> +<!--[if gte mso 10]> +<style> + /* Style Definitions */ + table.MsoNormalTable + {mso-style-name:"Tabela normal"; + mso-tstyle-rowband-size:0; + mso-tstyle-colband-size:0; + mso-style-noshow:yes; + mso-style-priority:99; + mso-style-qformat:yes; + mso-style-parent:""; + mso-padding-alt:0cm 5.4pt 0cm 5.4pt; + mso-para-margin:0cm; + mso-para-margin-bottom:.0001pt; + mso-pagination:widow-orphan; + font-size:10.0pt; + font-family:"Times New Roman","serif";} +</style> +<![endif]--> +<meta http-equiv=Content-Language content=en-us> +<!--[if gte mso 9]><xml> + <o:shapedefaults v:ext="edit" spidmax="2050"/> +</xml><![endif]--><!--[if gte mso 9]><xml> + <o:shapelayout v:ext="edit"> + <o:idmap v:ext="edit" data="1"/> + </o:shapelayout></xml><![endif]--> </head> -<body> - -<h1>History of Changes</h1> -<h3 dir="ltr">CVS (18/Nov/2008)</h3> -<ul> - <li><span style="color: #008000">Changed:</span> function <strong> - imColorHSI_Smax</strong> removed from public, now it is used only - internally. HSI space now uses S already normalized between 0-Smax.</li> - <li><span style="color: #FF0000">Fixed:</span> <strong>imColorHSI2RGB</strong> - conversion.</li> - <li><span style="color: #FF0000">Fixed:</span> <strong>imConvertDataType</strong> - when converting a floating point to integer, there were rounding problems.</li> -</ul> -<h3 dir="ltr">Version 3.4 (14/Oct/2008)</h3> -<ul> - <li><span style="color: #0000FF">New:</span> imlua_avi, imlua_wmv and imlua_jp2 libraries so the - respective formats can be dynamically loaded - using require.</li> - <li><span style="color: #0000FF"><span style="color: #008000">Changed</span>:</span> - <strong> - <span style="color: #FF0000">IMPORTANT</span></strong> - - the "imlua_cd" library moved from IM to CD under the name "cdluaim".</li> - <li><span style="color: #0000FF"><span style="color: #008000">Changed</span>:</span> - <strong> - <span style="color: #FF0000">IMPORTANT</span></strong> - the support services - (Downloads, Mailing List and CVS) moved from LuaForge to SourceForge.</li> - <li><span style="color: #008000">Changed:</span> All dll8 and dll9 DLLs now - have a Manifest file that specifies the correct MSVCR*.DLL.</li> - <li><span style="color: #008000">Changed:</span> - Makefiles for UNIX now uses a compact version of Tecmake that does not need - any installation, just type "make".</li> - <li><span style="color: #008000">Changed</span>: premake files are used now - only internally and were removed from the distribution.</li> - <li><span style="color: #0000FF"><span style="color: #008000">Changed</span>:</span> - Copyright notice modified to reflect the registration at INPI (National - Institute of Intellectual Property in Brazil). License continues under the - same terms.</li> - <li><span style="color: #FF0000">Fixed:</span> reviewed and fixed the parameter - checking of all IMLua processing functions. Also reviewed all IMLua - parameter checking. Thanks to Lucas Lorensi.</li> - <li><span style="color: #FF0000">Fixed:</span> loading of TIFF format with - old JPEG compression.</li> - <li><span style="color: #FF0000">Fixed:</span> loading and saving of PNM - format when data in textual format and gray values are greatter than 255.</li> - <li><span style="color: #FF0000">Fixed:</span> Bicubic and Zero order - interpolation for all geometric operations for pixels near the image border - when increasing image size.</li> - <li><span style="color: #FF0000">Fixed:</span> Lua samples.</li> - <li><span style="color: #FF0000">Fixed:</span> ICON format in 64 bits Linux.</li> -</ul> -<h3 dir="ltr">Version 3.3 (26/Nov/2007)</h3> -<ul> - <li><span style="color: #0000FF">New:</span> read support for ECW using the - ERMapper ECW JPEG 2000 SDK.</li> - <li><span style="color: #008000">Changed:</span> libTIFF updated to version - 3.8.2.</li> - <li><span style="color: #008000">Changed:</span> libPNG updated to version - 1.2.22.</li> - <li><span style="color: #008000">Changed:</span> libJasper updated to - libGeoJasper 1.4.0 (using Jasper version 1.900.1). Better support for - counter progress, Geo tags and several speed improvements. New GeoTIFFBox - and XMLPacket attributes.</li> - <li><span style="color: #008000">Changed:</span> renamed macro <b>imPutImage</b> - to <b>imcdCanvasPutImage</b>, and added canvas as the first parameter. </li> - <li><span style="color: #008000">Changed:</span> renamed - the <b>imImage</b> Lua - methods to <i><strong>image</strong></i><b>:cdCanvasPutImageRect</b>, <i> - <strong>image</strong></i><b>:wdCanvasPutImageRect</b> - and <i><strong>image</strong></i><b>:cdCanvasGetImage</b>, and added canvas as the first parameter. Now <i>imlua_cd</i> - depends on <i>cdlua</i> from CD version 5.0.</li> - <li><span style="color: #008000">Changed:</span> metatable names in Lua are - now the same as the C struct names.</li> - <li><span style="color: #008000">Changed:</span> new read EXIF tags support - in TIFF format (no write support yet). Renamed attributes "GeoTransMatrix" - and "IntergraphMatrix", to "GeoTransformationMatrix" and "Intergraph - TransformationMatrix" for libGeoTIFF compatibility. Better support for - known TIFF tags. New support for reading one band of a multiband gray image - in TIFF format. New support for DNG files.</li> - <li><span style="color: #FF0000">Fixed:</span><strong> imConvertDataType</strong> - gamma function when converting real to/from integer.</li> - <li><span style="color: #FF0000">Fixed:</span><strong> </strong>small error at - the image border when resampling, rotating or other geometric operations.</li> - <li><span style="color: #FF0000">Fixed:</span><strong> </strong> - <b>imProcessCanny</b> invalid division by zero when input image is all zero.</li> - <li><span style="color: #FF0000">Fixed:</span><strong> </strong> - <b>imFileReadImageInfo</b> when loading MAP images with a scrambled gray - palette. They were incorrectly converted to GREY.</li> - <li><span style="color: #FF0000">Fixed:</span><strong> </strong> - support for IM_ALPHA and 32 bpp in ICO format.</li> - <li><span style="color: #FF0000">Fixed:</span><strong> </strong> - number of lines returned in <b>imProcessHoughLinesDraw</b>.</li> -</ul> -<h3 dir="ltr">Version 3.2 (24/Nov/2006)</h3> -<ul> - <li><span style="color: #0000FF">New:</span> <strong>imProcessRotateRef</strong> to rotate relative to a reference point.</li> - <li><span style="color: #0000FF">New:</span> geometric distortion <strong>imProcessSwirl</strong>.</li> - <li><span style="color: #0000FF">New:</span> <strong>imProcessInterlaceSplit</strong>.</li> - <li><span style="color: #0000FF">New:</span> function <strong>imGaussianKernelSize2StdDev</strong>.</li> - <li><span style="color: #0000FF">New:</span> convolutions <strong>imProcessBarlettConvolve</strong>, - <strong>imProcessPrewittConvolve</strong>, <strong>imProcessSplineEdgeConvolve</strong>, - <strong>imProcessConvolveDual</strong> and <strong>imProcessConvolveSep</strong>. </li> - <li><span style="color: #0000FF">New:</span> "im_kernel.h" module with simple functions to create know pre-defined kernels like sobel, laplacian, gaussian, - etc.</li> - <li><span style="color: #0000FF">New:</span> <strong>imVideoCaptureSetInOut</strong> to control input and output in capture devices.</li> - <li><span style="color: #0000FF">New:</span> function <strong>imBinMemoryRelease</strong> to release internal memory allocated - by the BinMemory file when saving.</li> - <li><span style="color: #0000FF">New:</span> functions for capture device information: - <strong>imVideoCaptureDeviceExDesc</strong>, <strong>imVideoCaptureDevicePath</strong> and - <strong>imVideoCaptureDeviceVendorInfo</strong>.</li> - <li><span style="color: #0000FF">New:</span> function <strong>imFileOpenAs</strong> - to open a file of a specific format.</li> - <li><span style="color: #0000FF">New:</span> functions <strong> - imFormatRegisterInternal</strong> and <strong>imFormatRemoveAll</strong> to - control format registration.</li> - <li><span style="color: #008000">Changed:</span> <strong>imProcessGaussianConvolve</strong> to used separable convolution and now is stddev is negative will use its - magnitude as the kernel size. Removed Rep functions <strong>imProcessGaussianConvolveRep</strong>, - <strong>imProcessDiffOfGaussianConvolveRep</strong> and - <strong>imGaussianStdDev2Repetitions</strong>.</li> - <li><span style="color: #008000">Changed:</span> <strong>imProcessBlend</strong> - to use an image instead of a constant. Old function renamed to <strong> - imProcessBlendConst</strong>.</li> - <li><span style="color: #008000">Changed:</span> <strong>imFileHandle</strong> prototype. Now the function has an index parameter to specify which handle it should return. - index=0 is always an imBinFile* handle. Use index=1 or greater to return other internal handles that are format - dependent.</li> - <li><span style="color: #008000">Changed:</span> the Removed the include "im.h" - to not include "im_lib.h". "im_lib.h" must be included when necessary.</li> - <li><span style="color: #008000">Changed:</span> <strong>imAnalyzeMeasureArea</strong> and - <strong>imAnalyzeMeasurePerimeter</strong> prototypes to include the number of regions as a - parameter. Fixed: these functions to internally initialize the results array to zero (this was necessary and not - documented).</li> - <li><span style="color: #008000">Changed:</span> <strong>imProcessFlip</strong> - and <strong>imProcessMirror</strong> so they can be done in-place.</li> - <li><span style="color: #FF0000">Fixed:</span> missing implementation of - <strong>imVideoCaptureOneFrame</strong> in Lua 5.</li> - <li><span style="color: #FF0000">Fixed:</span> <strong>imAnalyzeFindRegions</strong> when pixel is at the width-1 column.</li> - <li><span style="color: #FF0000">Fixed:</span> file format identification when - <strong>TIFF</strong> identification failed was not closing the file.</li> - <li><span style="color: #FF0000">Fixed:</span> <strong>imAnalyzeMeasurePerimeter</strong> when perimeter line is at the first or last lines. Thanks to Takeshi Mitsunaga.</li> - <li><span style="color: #FF0000">Fixed:</span> invalid return value in <strong>imVideoCaptureConnect</strong> in Lua 5.</li> - <li><span style="color: #FF0000">Fixed:</span> <strong>imProcessRotate</strong> for IM_MAP images.</li> - <li><span style="color: #FF0000">Fixed:</span> <strong>Lua</strong> binding of - <strong>imFileImageSave</strong>, wrong parameters order. New: image:Save(filename, format) alias for imImage - objects.</li> - <li><span style="color: #FF0000">Fixed:</span> <strong>BMP</strong> format implementation when reading and writing RGBA 32 bits images.</li> - <li><span style="color: #FF0000">Fixed:</span> <strong>imFileLoadImageFrame</strong> and - <strong>imFileLoadBitmapFrame</strong> index parameter in Lua.</li> - <li><span style="color: #FF0000">Fixed:</span> alpha channel allocation in imImage.</li> -</ul> -<h3>Version 3.1 (12/Dez/2005)</h3> -<ul> - <li><span style="color: #0000FF">New:</span> Download, Discussion List, Submission of Bugs, Support Requests and Feature Requests, are now available thanks - to the LuaForge site.</li> - <li><span style="color: #0000FF">New:</span> Binding for Lua 5</li> - <li><span style="color: #0000FF">New:</span> support for alpha in imImage.</li> - <li><span style="color: #0000FF">New:</span> organization of the documentation.</li> - <li><span style="color: #0000FF">New:</span> in ICON format the TransparencyIndex is used to for IM_MAP images without an alpha - channel.</li> - <li><span style="color: #0000FF">New:</span> video capture functions: <strong>imVideoCaptureFormatCount</strong>, - <strong>imVideoCaptureGetFormat</strong> - and <strong>imVideoCaptureSetFormat</strong>, to access the available capture video formats.</li> - <li><span style="color: #0000FF">New:</span> functions <strong>imFileLoadImageFrame</strong> and - <strong>imFileLoadBitmapFrame</strong> to reuse the - image data when loading.</li> - <li><span style="color: #0000FF">New:</span> function <strong>imFileImageSave</strong>.</li> - <li><span style="color: #0000FF">New:</span> function <strong>imImageCreateBased</strong>.</li> - <li><span style="color: #0000FF">New:</span> <strong>imProcessInsert</strong>.</li> - <li><span style="color: #0000FF">New:</span> compression functions <strong>imCompressDataLZF</strong> and - <strong>imCompressDataUnLZF</strong>, using - libLZF.</li> - <li><span style="color: #0000FF">New:</span> module for imBinFile, <strong>IM_FILEHANDLE</strong> that allows to access an already opened file using the - system file handle as file name. Thanks to Frederico Abraham.</li> - <li><span style="color: #008000">Changed:</span> in JPEG file format YcbCr are now automatically converted to RGB when loaded. RGB images were already - automatically converted to YCbCr when saved. Now this behavior can be controlled by the AutoYCbCr - attribute.</li> - <li><span style="color: #008000">Changed:</span> the <strong>imAnalyzeFindRegions</strong> to include an additional parameter that control if regions - touching the border are computed or not. The function <strong>imProcessPrune</strong> now will only eliminate the - regions in the selected size range.</li> - <li><span style="color: #008000">Changed:</span> third party libraries, updated to newest versions: libExif, libTIFF, libPNG and zlib. Added OLD JPEG - support in libTIFF.</li> - <li> - <span style="color: #008000">Changed:</span> optimization flags to ON when building the library in all platforms.</li> - <li><span style="color: #008000">Changed:</span> <strong>imProcessPerimeterLine</strong>, - <strong>imAnalyzeMeasurePerimeter</strong>, - <strong>imAnalyzeMeasurePerimArea</strong>, <strong>imAnalyzeMeasureCentroid</strong> and - <strong>imAnalyzeMeasurePrincipalAxis</strong> to consider pixels that touch the borders.</li> - <li><span style="color: #008000">Changed:</span> macro name <strong>cdPutBitmap</strong> to - <strong>imPutBitmap</strong>.</li> - <li><span style="color: #008000">Changed:</span> function names imImageLoad and - <strong>imImageLoadBitmap</strong>, to - <strong>imFileImageLoad</strong> and <strong>imFileImageLoadBitmap</strong>.</li> - <li><span style="color: #FF0000">Fixed:</span> overflow in <strong>imCalcImageStatistics</strong> fo IM_INT and IM_USHORT images.</li> - <li><span style="color: #FF0000">Fixed:</span> error management in system file I/O in - <strong>UNIX</strong>.</li> - <li><span style="color: #FF0000">Fixed:</span> some small defines for 64-bits compatibility in libExif, libPNG and libJPEG.</li> - <li><span style="color: #FF0000">Fixed:</span> incorrect interpretation of 16 bit data from - <strong>PNG</strong> files.</li> - <li><span style="color: #FF0000">Fixed:</span> <strong>imFileReadImageInfo</strong> can be called many times with the same index that will return the - correct result without accessing the file again.</li> - <li><span style="color: #FF0000">Fixed:</span> small bug in sample <strong>iupglcap</strong>.</li> - <li><span style="color: #FF0000">Fixed:</span> <strong>TIFF</strong> format read for images with multiple bands in ExtraSamples.</li> - <li><span style="color: #FF0000">Fixed:</span> <strong>ICON</strong> format can_sequence was 0.</li> - <li><span style="color: #FF0000">Fixed:</span> <strong>imProcessMergeHSI</strong> and - <strong>imProcessSplitHSI</strong> documentation, and - implementation for <strong>IM_BYTE</strong> images.</li> - <li><span style="color: #FF0000">Fixed:</span> <strong>imProcessRangeContrastThreshold</strong>, - <strong>imProcessLocalMaxThreshold</strong> and - <strong>imProcessRankClosestConvolve</strong> when processing near the border.</li> - <li><span style="color: #FF0000">Fixed:</span> invalid file permissions in UNIX when saving a new file.</li> - <li><span style="color: #FF0000">Fixed:</span> name for <strong>imProcessLocalMaxThresEstimate</strong>.</li> - <li><span style="color: #FF0000">Fixed:</span> <strong>imProcessReduceBy4</strong> for images with odd width and/or height.</li> - <li><span style="color: #FF0000">Fixed:</span> <strong>imAttribTableSet</strong> when replacing an attribute (thanks to Takeshi Mitsunaga).</li> - <li><span style="color: #FF0000">Fixed:</span> memory leaks in <strong>imConvertToBitmap</strong> and - <strong>imConvertDataType</strong> (thanks to - Takeshi Mitsunaga).</li> - <li><span style="color: #FF0000">Fixed:</span> <strong>imProcessZeroCrossing</strong> for the last pixel column (thanks to Takeshi Mitsunaga). Also - fixed for some crossings that were lost.</li> - <li><span style="color: #FF0000">Fixed:</span> <strong>imProcessGrayMorphConvolve</strong> for - <strong>IM_FLOAT</strong> images with - <strong>IM_FLOAT</strong> kernel (thanks to Takeshi Mitsunaga).</li> -</ul> -<h3>Version 3.0.3 (14/Oct/2004)</h3> -<ul> - <li><span style="color: #0000FF">New:</span> Image Transform <strong>imProcessDistanceTransform</strong>.</li> - <li><span style="color: #0000FF">New:</span> group of functions Image Analysis: - <strong>imAnalyzeFindRegions</strong>, <strong>imAnalyzeMeasureArea</strong>, - <strong>imAnalyzeMeasurePerimArea</strong>, <strong>imAnalyzeMeasureCentroid</strong>, - <strong>imAnalyzeMeasurePrincipalAxis</strong>, <strong>imAnalyzeMeasureHoles</strong>, imProcessPerimeterLine, - <strong>imAnalyzeMeasurePerimeter</strong>, <strong>imProcessPrune</strong>, - <strong>imProcessFillHoles</strong>.</li> - <li><span style="color: #0000FF">New:</span> <strong>imConvertMapToRGB</strong> to help loading data as RGB.</li> - <li><span style="color: #0000FF">New:</span> sample iupglcap.</li> - <li><span style="color: #0000FF">New:</span> <strong>imProcessRenderChessboard</strong> and - <strong>imProcessRenderGrid</strong>.</li> - <li><span style="color: #008000">Changed:</span> <strong>imProcessThreshold</strong>, - <strong>imProcessRangeContrastThreshold</strong> and <strong>imProcessLocalMaxThreshold</strong> now also supports - <strong>IM_USHORT</strong> and <strong>IM_INT</strong> - data types. </li> - <li><span style="color: #008000">Changed:</span> the default color conversion to binary - so it can be done for all color spaces.</li> - <li><span style="color: #008000">Changed:</span> im_process.h to split into 4 files: im_process_pont.h, - im_process_loc.h, im_process_glo.h, im_process_ana.h. But it still - exists and includes the new files for compatibility.</li> - <li><span style="color: #008000">Changed:</span> the border extensions in several types of convolution. Rank convolution do not extend the borders. Binary - morphology use zero extension. Gray morphology do not extend the borders.</li> - <li><span style="color: #FF0000">Fixed:</span> file read with bitmap conversion when original data changes only data type. </li> - <li><span style="color: #FF0000">Fixed:</span> rank convolution operations that did not accept even kernel sizes.</li> - <li><span style="color: #FF0000">Fixed:</span> <strong>imProcessHoughLinesDraw</strong> that was ignoring some lines.</li> -</ul> -<h3>Version 3.0.2 (25/Aug/2004)</h3> - - <p>- <span style="color: #0000FF">New:</span> utility functions <b><b>imPaletteHighContrast</b></b>, <b> - <b>imImageLoadImage</b></b> and <b> - <b>imImageLoadBitmap</b></b>. <br> - - <span style="color: #0000FF">New:</span> operation <b><b>imProcessNormalizeComponents</b></b>.<br> - - <span style="color: #008000">Changed:</span> name <b><b>imProcessGaussianConvolve</b></b> to <b> - <b>imProcessGaussianConvolveRep</b></b>. New: - operation <b><b>imProcessGaussianConvolve</b></b> that uses a float kernel. - New: utility functions <b> - <b>imGaussianStdDev2Repetitions</b></b> and <b><b>imGaussianStdDev2KernelSize</b></b>.<br> - - <span style="color: #008000">Changed:</span> name <b><b>imProcessDiffOfGaussianConvolve</b></b> to <b> - <b>imProcessDiffOfGaussianConvolveRep</b></b>. - New: operation <b><b>imProcessDiffOfGaussianConvolve</b></b> that uses a float kernel. <br> - - <span style="color: #008000">Changed:</span> <b>IM_GAMUT_BRIGHTCONT</b> - parameters to the interval [-100,100]. Fixed: <b> - <b>IM_GAMUT_EXPAND</b></b> and <b><b>IM_GAMUT_BRIGHTCONT</b></b> normalization.<br> - - <span style="color: #008000">Changed:</span> logical operations, flag <b> <b>IM_BIT_NOT </b> - </b>replaced by operation <b><b>imProcessBitwiseNot</b></b>.<br> - - <span style="color: #008000">Changed:</span> <b>imImageSetAttribute</b> count can be -1 for zero terminated data.<br> - - <span style="color: #FF0000">Fixed:</span> operations <b><b>imProcessBitwiseNot</b></b> and <b> - <b>imProcessNegative</b></b> for <b><b>IM_BINARY</b></b> images.<br> - - <span style="color: #FF0000">Fixed:</span> the <b><b>color_mode_flags</b></b> parameter interpretation by <b> - <b>imFileReadImageData</b></b>. - <br> - - <span style="color: #FF0000">Fixed:</span> <b>imProcessEqualizeHistogram</b> and <b> - <b>imProcessExpandHistogram</b></b> for - color images. <br> - - <span style="color: #FF0000">Fixed:</span> <b>imProcessMultipleStdDev</b>.<br> - - <span style="color: #FF0000">Fixed:</span> <b>imProcessDifusionErrThreshold</b> for <b> - <b>IM_GRAY</b></b> images.<br> - - <span style="color: #FF0000">Fixed:</span> "<b><b>KRN</b></b>" format, internal format is topdown.<br> - - <span style="color: #FF0000">Fixed:</span> initialization of TGA image_count.</p> - -<h3>Version 3.0.1 (22/Apr/2004)</h3> - - <p>- Improved compatibility with the old version, it was missing the load of Map images with <b> - <b>imLoadRGB</b></b>.<br> - - The FFTW code was from version 2.1.3, not from 2.1.5 as suposed, it was updated. The FFT functions were condensed in - only one file with an "#ifdef" for FFTW version 2 and 3. The FFT functions also were renamed to remove the "W" that - belongs only to the FFTW library.<br> - - The <b><b>SetAttribute</b></b> functions now accept NULL in data to remove the attribute.<br> - - New: <b><b>imProcessCrossCorrelation</b></b> and <b><b>imProcessAutoCorrelation</b></b> functions.<br> - - The <b><b>imCalcGrayHistogram</b></b> function now can calculate the histogram of <b> - <b>IM_MAP</b></b> - and <b><b>IM_BINARY</b></b> images.</p> - -<h3>Version 3.0 (April 2004)</h3> - - <p>A major rewrite of the library. Everything changed, check the manual, but backward compatibility is kept for old - applications. A new API more flexible, new formats, support for attributes and video, image capture and image - processing. New: color spaces and data types. The library now got a professional look for scientific applications.</p> - -<h3>Version 2.6 (May 2002)</h3> - - <p>Correction of bug in resolution reading and writing for format JPEG.</p> - -<h3>Version 2.5 (August 2001)</h3> - - <p>Correction of bug in the default GIF compression. Two new callbacks: transparency color index for GIF files and - image description for TIFF files.</p> - -<h3>Version 2.4 (February 2000)</h3> - - <p>Change in the treatment of LZW compression in formats TIFF and GIF. Now compression is no longer the default.</p> - -<h3>Version 2.3 (June 1998)</h3> - - <p>Close function of the access driver for files in memory corrected. JPEG library updated to 6b. Correction of a - problem with the reading of some JPEG files.</p> - -<h3>Version 2.2 (November 1997)</h3> - - <p>The definition of the counter callback was changed to inform, in a parameter, the type of access being performed, - either reading or writing. Type <strong>imCallback</strong> defined to make type casting easier when using function - <strong>imRegisterCallback</strong>. Correction of a problem with the makefile in UNIX, which was generating link - errors in some platforms.</p> - -<h3>Version 2.1 (October 1997)</h3> - - <p>Correction of a problem with internal memory liberation when reading Map images in TIFF files. Conversion <b>RGB to - Map</b> is now made using the algorithm implemented by LibJPEG. The algorithm of <strong>imResize</strong> was - improved for cases in which the size is being reduced instead of increased. Correction of a problem with functions - <strong>imImageInfo</strong> and <strong>imFileFormat</strong>: when the provided file was not in a format recognized - by IM, there was an error in format TGA which caused these functions to access an invalid memory area.</p> - -<h3>Version 2.0 (September 1997)</h3> - - <p>The library was virtually rewritten to implement a new structure which allowed greater flexibility, simplifying the - addition of new formats. Formats <strong>TGA</strong>, <strong>PCL</strong>, <strong>JPEG</strong> and <strong>LED</strong> - were added to the list of supported formats, and new functions were added: <strong>imMap2RGB</strong>, <strong> - imRGB2Gray</strong>, <strong>imMap2Gray</strong>, <strong>imResize</strong>, <strong>imStretch</strong>.</p> - -<h3>Version 1.1 (June 1996)</h3> - - <p>Small corrections to increase portability. Changes in return codes. Identifiers were created to return codes and - predefined parameters. Online manual concluded.</p> - -<h3>Version 1.0 (October 1995)</h3> +<body lang=PT-BR link=blue vlink=purple style='tab-interval:35.4pt'> + +<div class=Section1> + +<h1><span lang=EN-US style='mso-fareast-font-family:"Times New Roman"; +mso-ansi-language:EN-US'>History of Changes<o:p></o:p></span></h1> + +<div style='mso-element:para-border-div;border:solid gray 1.0pt;mso-border-alt: +solid gray .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#E1E1E1'> + +<h3 style='background:#E1E1E1'><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";mso-ansi-language:EN-US'>CVS (03/Dez/2008)<o:p></o:p></span></h3> + +</div> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo1;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> function <span class=SpellE><strong>imColorHSI_Smax</strong></span> +removed from public, now it is used only internally. </span><span +style='mso-fareast-font-family:"Times New Roman"'>HSI <span class=SpellE>space</span> +<span class=SpellE>now</span> uses S <span class=SpellE>already</span> <span +class=SpellE>normalized</span> <span class=SpellE>between</span> 0-<span +class=SpellE>Smax</span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo1;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='mso-fareast-font-family: +"Times New Roman";color:red'>Fixed</span></span><span style='mso-fareast-font-family: +"Times New Roman";color:red'>:</span><span style='mso-fareast-font-family:"Times New Roman"'> +<span class=GramE><strong>imColorHSI2RGB</strong></span> <span class=SpellE>conversion</span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo1;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imConvertDataType</strong></span> when +converting a floating point to integer, there were rounding problems.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo1;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed: </span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'>loading or saving two files of the same format at the same time.<o:p></o:p></span></p> + +<div style='mso-element:para-border-div;border:solid gray 1.0pt;mso-border-alt: +solid gray .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#E1E1E1'> + +<h3 style='background:#E1E1E1'><span style='mso-fareast-font-family:"Times New Roman"'>Version +3.4 (14/<span class=SpellE>Oct</span>/2008)<o:p></o:p></span></h3> + +</div> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:blue;mso-ansi-language:EN-US'>New:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE>imlua_avi</span>, <span class=SpellE>imlua_wmv</span> +and imlua_jp2 libraries so the respective formats can be dynamically loaded +using require.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";color:blue; +mso-ansi-language:EN-US'>:</span><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";mso-ansi-language:EN-US'> <strong><span style='color:red'>IMPORTANT</span></strong> +- the "<span class=SpellE>imlua_cd</span>" library moved from IM to +CD under the name "<span class=SpellE>cdluaim</span>".<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";color:blue; +mso-ansi-language:EN-US'>:</span><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";mso-ansi-language:EN-US'> <strong><span style='color:red'>IMPORTANT</span></strong> +- the support services (Downloads, Mailing List and CVS) moved from <span +class=SpellE>LuaForge</span> to <span class=SpellE>SourceForge</span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> All dll8 and dll9 DLLs now have a Manifest file that specifies the +correct MSVCR*.DLL.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE>Makefiles</span> for UNIX now uses a compact version +of <span class=SpellE>Tecmake</span> that does not need any installation, just +type "make".<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'>: <span class=SpellE>premake</span> files are used now only internally +and were removed from the distribution.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";color:blue; +mso-ansi-language:EN-US'>:</span><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";mso-ansi-language:EN-US'> Copyright notice modified to reflect +the registration at INPI (National Institute of Intellectual Property in +Brazil). </span><span class=SpellE><span style='mso-fareast-font-family:"Times New Roman"'>License</span></span><span +style='mso-fareast-font-family:"Times New Roman"'> <span class=GramE>continues</span> +<span class=SpellE>under</span> <span class=SpellE>the</span> <span +class=SpellE>same</span> <span class=SpellE>terms</span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> reviewed and fixed the parameter checking of all <span class=SpellE>IMLua</span> +processing functions. Also reviewed all <span class=SpellE>IMLua</span> +parameter checking. Thanks to Lucas <span class=SpellE>Lorensi</span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> loading of TIFF format with old JPEG compression.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> loading and saving of PNM format when data in textual format and gray +values are <span class=SpellE>greatter</span> than 255.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE>Bicubic</span> and Zero order interpolation for all +geometric operations for pixels near the image border when increasing image +size.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='mso-fareast-font-family: +"Times New Roman";color:red'>Fixed</span></span><span style='mso-fareast-font-family: +"Times New Roman";color:red'>:</span><span style='mso-fareast-font-family:"Times New Roman"'> +Lua <span class=SpellE>samples</span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> ICON format in 64 bits Linux.<o:p></o:p></span></p> + +<div style='mso-element:para-border-div;border:solid gray 1.0pt;mso-border-alt: +solid gray .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#E1E1E1'> + +<h3 style='background:#E1E1E1'><span style='mso-fareast-font-family:"Times New Roman"'>Version +3.3 (26/Nov/2007)<o:p></o:p></span></h3> + +</div> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:blue;mso-ansi-language:EN-US'>New:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> read support for ECW using the <span class=SpellE>ERMapper</span> ECW +JPEG 2000 SDK.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE>libTIFF</span> updated to version 3.8.2.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE>libPNG</span> updated to version 1.2.22.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE>libJasper</span> updated to <span class=SpellE>libGeoJasper</span> +1.4.0 (using Jasper version 1.900.1). Better support for counter progress, Geo +tags and several speed improvements. </span><span class=SpellE><span +style='mso-fareast-font-family:"Times New Roman"'>New</span></span><span +style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE><span +class=GramE>GeoTIFFBox</span></span> <span class=SpellE>and</span> <span +class=SpellE>XMLPacket</span> <span class=SpellE>attributes</span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> renamed macro <span class=SpellE><b>imPutImage</b></span> to <span +class=SpellE><b>imcdCanvasPutImage</b></span>, and added canvas as the first +parameter. <o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> renamed the <span class=SpellE><b>imImage</b></span> <span +class=SpellE>Lua</span> methods to <span class=SpellE><strong><i>image</i></strong><span +class=GramE><b>:cdCanvasPutImageRect</b></span></span>, <span class=SpellE><strong><i>image</i></strong><b>:wdCanvasPutImageRect</b></span> +and <span class=SpellE><strong><i>image</i></strong><b>:cdCanvasGetImage</b></span>, +and added canvas as the first parameter. </span><span class=SpellE><span +style='mso-fareast-font-family:"Times New Roman"'>Now</span></span><span +style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE><i>imlua_cd</i></span> +<span class=SpellE>depends</span> <span class=SpellE>on</span> <span +class=SpellE><i>cdlua</i></span> <span class=SpellE>from</span> CD version 5.0.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE>metatable</span> names in <span class=SpellE>Lua</span> +are now the same as the C <span class=SpellE>struct</span> names.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> new read EXIF tags support in TIFF format (no write support yet). +Renamed attributes "<span class=SpellE>GeoTransMatrix</span>" and +"<span class=SpellE>IntergraphMatrix</span>", to "<span +class=SpellE>GeoTransformationMatrix</span>" and "Intergraph <span +class=SpellE>TransformationMatrix</span>" for <span class=SpellE>libGeoTIFF</span> +compatibility. Better support for known TIFF tags. New support for reading one +band of a multiband gray image in TIFF format. </span><span class=SpellE><span +style='mso-fareast-font-family:"Times New Roman"'>New</span></span><span +style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>support</span> +for DNG files.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><strong><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE>imConvertDataType</span></span></strong><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> gamma function when converting real to/from integer.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><strong><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> </span></strong><span lang=EN-US style='mso-fareast-font-family:"Times New Roman"; +mso-ansi-language:EN-US'>small error at the image border when <span +class=SpellE>resampling</span>, rotating or other geometric operations.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><strong><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> </span></strong><span class=SpellE><b><span lang=EN-US +style='mso-fareast-font-family:"Times New Roman";mso-ansi-language:EN-US'>imProcessCanny</span></b></span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> invalid division by zero when input image is all zero.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><strong><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> </span></strong><span class=SpellE><b><span lang=EN-US +style='mso-fareast-font-family:"Times New Roman";mso-ansi-language:EN-US'>imFileReadImageInfo</span></b></span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> when loading MAP images with a scrambled gray palette. </span><span +class=SpellE><span style='mso-fareast-font-family:"Times New Roman"'>They</span></span><span +style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>were</span> +<span class=SpellE>incorrectly</span> <span class=SpellE>converted</span> to +GREY.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><strong><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> </span></strong><span lang=EN-US style='mso-fareast-font-family:"Times New Roman"; +mso-ansi-language:EN-US'>support for IM_ALPHA and 32 <span class=SpellE>bpp</span> +in ICO format.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo3;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><strong><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> </span></strong><span lang=EN-US style='mso-fareast-font-family:"Times New Roman"; +mso-ansi-language:EN-US'>number of lines returned in <span class=SpellE><b>imProcessHoughLinesDraw</b></span>.<o:p></o:p></span></p> + +<div style='mso-element:para-border-div;border:solid gray 1.0pt;mso-border-alt: +solid gray .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#E1E1E1'> + +<h3 style='background:#E1E1E1'><span style='mso-fareast-font-family:"Times New Roman"'>Version +3.2 (24/Nov/2006)<o:p></o:p></span></h3> + +</div> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:blue;mso-ansi-language:EN-US'>New:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imProcessRotateRef</strong></span> to rotate +relative to a reference point.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>New</span></span><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>:</span><span style='mso-fareast-font-family: +"Times New Roman"'> <span class=SpellE>geometric</span> <span class=SpellE>distortion</span> +<span class=SpellE><span class=GramE><strong>imProcessSwirl</strong></span></span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>New</span></span><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>:</span><span style='mso-fareast-font-family: +"Times New Roman"'> <span class=SpellE><span class=GramE><strong>imProcessInterlaceSplit</strong></span></span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>New</span></span><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>:</span><span style='mso-fareast-font-family: +"Times New Roman"'> <span class=SpellE>function</span> <span class=GramE><strong>imGaussianKernelSize2StdDev</strong></span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>New</span></span><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>:</span><span style='mso-fareast-font-family: +"Times New Roman"'> <span class=SpellE>convolutions</span> <span class=SpellE><span +class=GramE><strong>imProcessBarlettConvolve</strong></span></span>, <span +class=SpellE><strong>imProcessPrewittConvolve</strong></span>, <span +class=SpellE><strong>imProcessSplineEdgeConvolve</strong></span>, <span +class=SpellE><strong>imProcessConvolveDual</strong></span> <span class=SpellE>and</span> +<span class=SpellE><strong>imProcessConvolveSep</strong></span>. <o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:blue;mso-ansi-language:EN-US'>New:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> "<span class=SpellE><span class=GramE>im_kernel.h</span></span><span +class=GramE>" module with simple functions to create know</span> +pre-defined kernels like <span class=SpellE>sobel</span>, <span class=SpellE>laplacian</span>, +<span class=SpellE>gaussian</span>, etc.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:blue;mso-ansi-language:EN-US'>New:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imVideoCaptureSetInOut</strong></span> to +control input and output in capture devices.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:blue;mso-ansi-language:EN-US'>New:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=GramE>function</span> <span class=SpellE><strong>imBinMemoryRelease</strong></span> +to release internal memory allocated by the <span class=SpellE>BinMemory</span> +file when saving.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:blue;mso-ansi-language:EN-US'>New:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> functions for capture device information: <span class=SpellE><strong>imVideoCaptureDeviceExDesc</strong></span>, +<span class=SpellE><strong>imVideoCaptureDevicePath</strong></span> and <span +class=SpellE><strong>imVideoCaptureDeviceVendorInfo</strong></span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:blue;mso-ansi-language:EN-US'>New:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=GramE>function</span> <span class=SpellE><strong>imFileOpenAs</strong></span> +to open a file of a specific format.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:blue;mso-ansi-language:EN-US'>New:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> functions <span class=SpellE><strong>imFormatRegisterInternal</strong></span> +and <span class=SpellE><strong>imFormatRemoveAll</strong></span> to control +format registration.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imProcessGaussianConvolve</strong></span> to +used separable convolution and now is <span class=SpellE>stddev</span> is +negative will use its magnitude as the kernel size. </span><span class=SpellE><span +style='mso-fareast-font-family:"Times New Roman"'>Removed</span></span><span +style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>Rep</span> +<span class=SpellE>functions</span> <span class=SpellE><span class=GramE><strong>imProcessGaussianConvolveRep</strong></span></span>, +<span class=SpellE><strong>imProcessDiffOfGaussianConvolveRep</strong></span> <span +class=SpellE>and</span> <strong>imGaussianStdDev2Repetitions</strong>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imProcessBlend</strong></span> to use an +image instead of a constant. Old function renamed to <span class=SpellE><strong>imProcessBlendConst</strong></span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imFileHandle</strong></span> prototype. Now +the function has an index parameter to specify which handle it should return. <span +class=GramE>index=</span>0 is always an <span class=SpellE>imBinFile</span>* +handle. Use index=1 or greater to return other internal handles that are format +dependent.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> the Removed the include "<span class=SpellE>im.h</span>" to +not include "<span class=SpellE>im_lib.h</span>". </span><span +style='mso-fareast-font-family:"Times New Roman"'>"<span class=SpellE><span +class=GramE>im_lib</span></span><span class=GramE>.</span>h" <span +class=SpellE>must</span> <span class=SpellE>be</span> <span class=SpellE>included</span> +<span class=SpellE>when</span> <span class=SpellE>necessary</span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imAnalyzeMeasureArea</strong></span> and <span +class=SpellE><strong>imAnalyzeMeasurePerimeter</strong></span> prototypes to +include the number of regions as a parameter. Fixed: these functions to +internally initialize the results array to zero (this was necessary and not +documented).<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imProcessFlip</strong></span> and <span +class=SpellE><strong>imProcessMirror</strong></span> so they can be done +in-place.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> missing implementation of <span class=SpellE><strong>imVideoCaptureOneFrame</strong></span> +in <span class=SpellE>Lua</span> 5.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imAnalyzeFindRegions</strong></span> when +pixel is at the width-1 column.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> file format identification when <strong>TIFF</strong> identification +failed was not closing the file.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imAnalyzeMeasurePerimeter</strong></span> +when perimeter line is at the first or last lines. </span><span class=SpellE><span +style='mso-fareast-font-family:"Times New Roman"'>Thanks</span></span><span +style='mso-fareast-font-family:"Times New Roman"'> to <span class=SpellE>Takeshi</span> +<span class=SpellE>Mitsunaga</span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> invalid return value in <span class=SpellE><strong>imVideoCaptureConnect</strong></span> +in <span class=SpellE>Lua</span> 5.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imProcessRotate</strong></span> for IM_MAP +images.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>Lua</strong></span> binding of <span +class=SpellE><strong>imFileImageSave</strong></span>, wrong parameters order. +New: <span class=SpellE>image<span class=GramE>:Save</span></span>(filename, +format) alias for <span class=SpellE>imImage</span> objects.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <strong>BMP</strong> format implementation when reading and writing +RGBA 32 bits images.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imFileLoadImageFrame</strong></span> and <span +class=SpellE><strong>imFileLoadBitmapFrame</strong></span> index parameter in <span +class=SpellE>Lua</span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> alpha channel allocation in <span class=SpellE>imImage</span>.<o:p></o:p></span></p> + +<div style='mso-element:para-border-div;border:solid gray 1.0pt;mso-border-alt: +solid gray .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#E1E1E1'> + +<h3 style='background:#E1E1E1'><span style='mso-fareast-font-family:"Times New Roman"'>Version +3.1 (12/Dez/2005)<o:p></o:p></span></h3> + +</div> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:blue;mso-ansi-language:EN-US'>New:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> Download, Discussion List, Submission of Bugs, Support Requests and +Feature Requests, are now available thanks to the <span class=SpellE>LuaForge</span> +site.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>New</span></span><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>:</span><span style='mso-fareast-font-family: +"Times New Roman"'> <span class=SpellE>Binding</span> for Lua <span +class=GramE>5</span><o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:blue;mso-ansi-language:EN-US'>New:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> support for alpha in <span class=SpellE>imImage</span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:blue;mso-ansi-language:EN-US'>New:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> organization of the documentation.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:blue;mso-ansi-language:EN-US'>New:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> in ICON format the <span class=SpellE>TransparencyIndex</span> is used +to for IM_MAP images without an alpha channel.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:blue;mso-ansi-language:EN-US'>New:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> video capture functions: <span class=SpellE><strong>imVideoCaptureFormatCount</strong></span>, +<span class=SpellE><strong>imVideoCaptureGetFormat</strong></span> and <span +class=SpellE><strong>imVideoCaptureSetFormat</strong></span>, to access the +available capture video formats.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:blue;mso-ansi-language:EN-US'>New:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> functions <span class=SpellE><strong>imFileLoadImageFrame</strong></span> +and <span class=SpellE><strong>imFileLoadBitmapFrame</strong></span> to reuse +the image data when loading.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>New</span></span><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>:</span><span style='mso-fareast-font-family: +"Times New Roman"'> <span class=SpellE>function</span> <span class=SpellE><span +class=GramE><strong>imFileImageSave</strong></span></span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>New</span></span><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>:</span><span style='mso-fareast-font-family: +"Times New Roman"'> <span class=SpellE>function</span> <span class=SpellE><span +class=GramE><strong>imImageCreateBased</strong></span></span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>New</span></span><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>:</span><span style='mso-fareast-font-family: +"Times New Roman"'> <span class=SpellE><span class=GramE><strong>imProcessInsert</strong></span></span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:blue;mso-ansi-language:EN-US'>New:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> compression functions <span class=SpellE><strong>imCompressDataLZF</strong></span> +and <span class=SpellE><strong>imCompressDataUnLZF</strong></span>, using <span +class=SpellE>libLZF</span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:blue;mso-ansi-language:EN-US'>New:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> module for <span class=SpellE>imBinFile</span>, <strong>IM_FILEHANDLE</strong> +that allows <span class=GramE>to access</span> an already opened file using the +system file handle as file name. </span><span class=SpellE><span +style='mso-fareast-font-family:"Times New Roman"'>Thanks</span></span><span +style='mso-fareast-font-family:"Times New Roman"'> to Frederico Abraham.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> in JPEG file format <span class=SpellE>YcbCr</span> are now +automatically converted to RGB when loaded. RGB images were already +automatically converted to <span class=SpellE>YCbCr</span> when saved. Now this +behavior can be controlled by the <span class=SpellE>AutoYCbCr</span> +attribute.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> the <span class=SpellE><strong>imAnalyzeFindRegions</strong></span> to +include an additional parameter that control if regions touching the border are +computed or not. The function <span class=SpellE><strong>imProcessPrune</strong></span> +now will only eliminate the regions in the selected size range.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> third party libraries, updated to newest versions: <span class=SpellE>libExif</span>, +<span class=SpellE>libTIFF</span>, <span class=SpellE>libPNG</span> and <span +class=SpellE>zlib</span>. </span><span class=SpellE><span style='mso-fareast-font-family: +"Times New Roman"'>Added</span></span><span style='mso-fareast-font-family: +"Times New Roman"'> OLD JPEG <span class=SpellE>support</span> in <span +class=SpellE><span class=GramE>libTIFF</span></span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> optimization flags to ON when building the library in all platforms.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imProcessPerimeterLine</strong></span>, <span +class=SpellE><strong>imAnalyzeMeasurePerimeter</strong></span>, <span +class=SpellE><strong>imAnalyzeMeasurePerimArea</strong></span>, <span +class=SpellE><strong>imAnalyzeMeasureCentroid</strong></span> and <span +class=SpellE><strong>imAnalyzeMeasurePrincipalAxis</strong></span> to consider +pixels that touch the borders.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> macro name <span class=SpellE><strong>cdPutBitmap</strong></span> to <span +class=SpellE><strong>imPutBitmap</strong></span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> function names <span class=SpellE>imImageLoad</span> and <span +class=SpellE><strong>imImageLoadBitmap</strong></span>, to <span class=SpellE><strong>imFileImageLoad</strong></span> +and <span class=SpellE><strong>imFileImageLoadBitmap</strong></span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> overflow in <span class=SpellE><strong>imCalcImageStatistics</strong></span> +<span class=SpellE><span class=GramE>fo</span></span> IM_INT and IM_USHORT +images.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> error management in system file I/O in <strong>UNIX</strong>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> some small defines for 64-bits compatibility in <span class=SpellE>libExif</span>, +<span class=SpellE>libPNG</span> and <span class=SpellE>libJPEG</span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> incorrect interpretation of 16 bit data from <strong>PNG</strong> +files.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imFileReadImageInfo</strong></span> can be +called many times with the same index that will return the correct result +without accessing the file again.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> small bug in sample <span class=SpellE><strong>iupglcap</strong></span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <strong>TIFF</strong> format read for images with multiple bands in <span +class=SpellE>ExtraSamples</span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <strong>ICON</strong> format <span class=SpellE>can_sequence</span> was +0.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imProcessMergeHSI</strong></span> and <span +class=SpellE><strong>imProcessSplitHSI</strong></span> documentation, and implementation +for <strong>IM_BYTE</strong> images.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imProcessRangeContrastThreshold</strong></span>, +<span class=SpellE><strong>imProcessLocalMaxThreshold</strong></span> and <span +class=SpellE><strong>imProcessRankClosestConvolve</strong></span> when +processing near the border.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> invalid file permissions in UNIX when saving a new file.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='mso-fareast-font-family: +"Times New Roman";color:red'>Fixed</span></span><span style='mso-fareast-font-family: +"Times New Roman";color:red'>:</span><span style='mso-fareast-font-family:"Times New Roman"'> +<span class=SpellE>name</span> for <span class=SpellE><span class=GramE><strong>imProcessLocalMaxThresEstimate</strong></span></span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <strong>imProcessReduceBy4</strong> for images with odd width and/or +height.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imAttribTableSet</strong></span> when +replacing an attribute (thanks to Takeshi <span class=SpellE>Mitsunaga</span>).<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> memory leaks in <span class=SpellE><strong>imConvertToBitmap</strong></span> +and <span class=SpellE><strong>imConvertDataType</strong></span> (thanks to +Takeshi <span class=SpellE>Mitsunaga</span>).<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imProcessZeroCrossing</strong></span> for +the last pixel column (thanks to Takeshi <span class=SpellE>Mitsunaga</span>). </span><span +class=SpellE><span style='mso-fareast-font-family:"Times New Roman"'>Also</span></span><span +style='mso-fareast-font-family:"Times New Roman"'> <span class=SpellE>fixed</span> +for some <span class=SpellE>crossings</span> <span class=SpellE>that</span> <span +class=SpellE>were</span> <span class=SpellE>lost</span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l5 level1 lfo5;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imProcessGrayMorphConvolve</strong></span> +for <strong>IM_FLOAT</strong> images with <strong>IM_FLOAT</strong> kernel +(thanks to Takeshi <span class=SpellE>Mitsunaga</span>).<o:p></o:p></span></p> + +<div style='mso-element:para-border-div;border:solid gray 1.0pt;mso-border-alt: +solid gray .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#E1E1E1'> + +<h3 style='background:#E1E1E1'><span style='mso-fareast-font-family:"Times New Roman"'>Version +3.0.3 (14/<span class=SpellE>Oct</span>/2004)<o:p></o:p></span></h3> + +</div> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo6;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>New</span></span><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>:</span><span style='mso-fareast-font-family: +"Times New Roman"'> <span class=SpellE>Image</span> <span class=SpellE>Transform</span> +<span class=SpellE><span class=GramE><strong>imProcessDistanceTransform</strong></span></span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo6;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:blue;mso-ansi-language:EN-US'>New:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> group of functions Image Analysis: <span class=SpellE><strong>imAnalyzeFindRegions</strong></span>, +<span class=SpellE><strong>imAnalyzeMeasureArea</strong></span>, <span +class=SpellE><strong>imAnalyzeMeasurePerimArea</strong></span>, <span +class=SpellE><strong>imAnalyzeMeasureCentroid</strong></span>, <span +class=SpellE><strong>imAnalyzeMeasurePrincipalAxis</strong></span>, <span +class=SpellE><strong>imAnalyzeMeasureHoles</strong></span>, <span class=SpellE>imProcessPerimeterLine</span>, +<span class=SpellE><strong>imAnalyzeMeasurePerimeter</strong></span>, <span +class=SpellE><strong>imProcessPrune</strong></span>, <span class=SpellE><strong>imProcessFillHoles</strong></span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo6;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:blue;mso-ansi-language:EN-US'>New:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imConvertMapToRGB</strong></span> to help +loading data as RGB.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo6;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>New</span></span><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>:</span><span style='mso-fareast-font-family: +"Times New Roman"'> <span class=SpellE>sample</span> <span class=SpellE>iupglcap</span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo6;tab-stops:list 36.0pt'><![if !supportLists]><span +style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>New</span></span><span style='mso-fareast-font-family: +"Times New Roman";color:blue'>:</span><span style='mso-fareast-font-family: +"Times New Roman"'> <span class=SpellE><span class=GramE><strong>imProcessRenderChessboard</strong></span></span> +<span class=SpellE>and</span> <span class=SpellE><strong>imProcessRenderGrid</strong></span>.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo6;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imProcessThreshold</strong></span>, <span +class=SpellE><strong>imProcessRangeContrastThreshold</strong></span> and <span +class=SpellE><strong>imProcessLocalMaxThreshold</strong></span> now also <span +class=GramE>supports</span> <strong>IM_USHORT</strong> and <strong>IM_INT</strong> +data types. <o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo6;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> the default color conversion to binary so it can be done for all color +spaces.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo6;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE>im_process.h</span> to split into 4 files: <span +class=SpellE>im_process_pont.h</span>, <span class=SpellE>im_process_loc.h</span>, +<span class=SpellE>im_process_glo.h</span>, <span class=SpellE>im_process_ana.h</span>. +But it still exists and includes the new files for compatibility.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo6;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:green;mso-ansi-language:EN-US'>Changed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> the border extensions in several types of convolution. Rank <span +class=GramE>convolution do</span> not extend the borders. Binary morphology <span +class=GramE>use</span> zero extension. Gray morphology <span class=GramE>do</span> +not extend the borders.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo6;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> file read with bitmap conversion when original data changes only data +type. <o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo6;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> rank convolution operations that did not accept even kernel sizes.<o:p></o:p></span></p> + +<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; +margin-left:24.0pt;text-indent:-18.0pt;mso-list:l4 level1 lfo6;tab-stops:list 36.0pt'><![if !supportLists]><span +lang=EN-US style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language: +EN-US'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";color:red;mso-ansi-language:EN-US'>Fixed:</span><span +lang=EN-US style='mso-fareast-font-family:"Times New Roman";mso-ansi-language: +EN-US'> <span class=SpellE><strong>imProcessHoughLinesDraw</strong></span> that +was ignoring some lines.<o:p></o:p></span></p> + +<div style='mso-element:para-border-div;border:solid gray 1.0pt;mso-border-alt: +solid gray .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#E1E1E1'> + +<h3 style='background:#E1E1E1'><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";mso-ansi-language:EN-US'>Version 3.0.2 (25/Aug/2004)<o:p></o:p></span></h3> + +</div> + +<p><span lang=EN-US style='mso-ansi-language:EN-US'>- <span style='color:blue'>New:</span> +utility functions <span class=SpellE><b>imPaletteHighContrast</b></span>, <span +class=SpellE><b>imImageLoadImage</b></span> and <span class=SpellE><b>imImageLoadBitmap</b></span>. +<br> +- <span style='color:blue'>New:</span> operation <span class=SpellE><b>imProcessNormalizeComponents</b></span>.<br> +- <span style='color:green'>Changed:</span> name <span class=SpellE><b>imProcessGaussianConvolve</b></span> +to <span class=SpellE><b>imProcessGaussianConvolveRep</b></span>. New: +operation <span class=SpellE><b>imProcessGaussianConvolve</b></span> that uses +a float kernel. New: utility functions <b>imGaussianStdDev2Repetitions</b> and <b>imGaussianStdDev2KernelSize</b>.<br> +- <span style='color:green'>Changed:</span> name <span class=SpellE><b>imProcessDiffOfGaussianConvolve</b></span> +to <span class=SpellE><b>imProcessDiffOfGaussianConvolveRep</b></span>. New: +operation <span class=SpellE><b>imProcessDiffOfGaussianConvolve</b></span> that +uses a float kernel. <br> +- <span style='color:green'>Changed:</span> <b>IM_GAMUT_BRIGHTCONT</b> +parameters to the interval [-100,100]. <span class=GramE>Fixed: <b>IM_GAMUT_EXPAND</b> +and <b>IM_GAMUT_BRIGHTCONT</b> normalization.</span><br> +- <span style='color:green'>Changed:</span> logical operations, flag <b>IM_BIT_NOT +</b>replaced by operation <span class=SpellE><b>imProcessBitwiseNot</b></span>.<br> +- <span style='color:green'>Changed:</span> <span class=SpellE><b>imImageSetAttribute</b></span> +count can be -1 for zero terminated data.<br> +- <span style='color:red'>Fixed:</span> operations <span class=SpellE><b>imProcessBitwiseNot</b></span> +and <span class=SpellE><b>imProcessNegative</b></span> for <b>IM_BINARY</b> +images.<br> +- <span style='color:red'>Fixed:</span> the <span class=SpellE><b>color_mode_flags</b></span> +parameter interpretation by <span class=SpellE><b>imFileReadImageData</b></span>. +<br> +- <span style='color:red'>Fixed:</span> <span class=SpellE><b>imProcessEqualizeHistogram</b></span> +and <span class=SpellE><b>imProcessExpandHistogram</b></span> for color images. +<br> +- <span style='color:red'>Fixed:</span> <span class=SpellE><b>imProcessMultipleStdDev</b></span>.<br> +- <span style='color:red'>Fixed:</span> <span class=SpellE><b>imProcessDifusionErrThreshold</b></span> +for <b>IM_GRAY</b> images.<br> +- <span style='color:red'>Fixed:</span> "<b>KRN</b>" format, internal +format is <span class=SpellE>topdown</span>.<br> +- <span style='color:red'>Fixed:</span> initialization of TGA <span +class=SpellE>image_count</span>.<o:p></o:p></span></p> + +<div style='mso-element:para-border-div;border:solid gray 1.0pt;mso-border-alt: +solid gray .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#E1E1E1'> + +<h3 style='background:#E1E1E1'><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";mso-ansi-language:EN-US'>Version 3.0.1 (22/Apr/2004)<o:p></o:p></span></h3> + +</div> + +<p><span lang=EN-US style='mso-ansi-language:EN-US'>- Improved compatibility +with the old version, it was missing the load of Map images with <span +class=SpellE><b>imLoadRGB</b></span>.<br> +- The FFTW code was from version 2.1.3, not from 2.1.5 as <span class=SpellE>suposed</span>, +it was updated. The FFT functions were condensed in only one file with <span +class=GramE>an</span> "#<span class=SpellE>ifdef</span>" for FFTW +version 2 and 3. The FFT functions also were renamed to remove the +"W" that belongs only to the FFTW library.<br> +- The <span class=SpellE><b>SetAttribute</b></span> functions now accept NULL +in data to remove the attribute.<br> +- New: <span class=SpellE><b>imProcessCrossCorrelation</b></span> and <span +class=SpellE><b>imProcessAutoCorrelation</b></span> functions.<br> +- The <span class=SpellE><b>imCalcGrayHistogram</b></span> function now can +calculate the histogram of <b>IM_MAP</b> and <b>IM_BINARY</b> images.<o:p></o:p></span></p> + +<div style='mso-element:para-border-div;border:solid gray 1.0pt;mso-border-alt: +solid gray .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#E1E1E1'> + +<h3 style='background:#E1E1E1'><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";mso-ansi-language:EN-US'>Version 3.0 (April 2004)<o:p></o:p></span></h3> + +</div> + +<p><span class=GramE><span lang=EN-US style='mso-ansi-language:EN-US'>A major +rewrite of the library.</span></span><span lang=EN-US style='mso-ansi-language: +EN-US'> Everything changed, check the manual, but backward compatibility is +kept for old applications. A new API more flexible, new formats, support for +attributes and video, image capture and image processing. New: color spaces and +data types. The library now got a professional look for scientific +applications.<o:p></o:p></span></p> + +<div style='mso-element:para-border-div;border:solid gray 1.0pt;mso-border-alt: +solid gray .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#E1E1E1'> + +<h3 style='background:#E1E1E1'><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";mso-ansi-language:EN-US'>Version 2.6 (May 2002)<o:p></o:p></span></h3> + +</div> + +<p><span class=GramE><span lang=EN-US style='mso-ansi-language:EN-US'>Correction +of bug in resolution reading and writing for format JPEG.</span></span><span +lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p> + +<div style='mso-element:para-border-div;border:solid gray 1.0pt;mso-border-alt: +solid gray .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#E1E1E1'> + +<h3 style='background:#E1E1E1'><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";mso-ansi-language:EN-US'>Version 2.5 (August 2001)<o:p></o:p></span></h3> + +</div> + +<p><span class=GramE><span lang=EN-US style='mso-ansi-language:EN-US'>Correction +of bug in the default GIF compression.</span></span><span lang=EN-US +style='mso-ansi-language:EN-US'> Two new callbacks: transparency color index +for GIF files and image description for TIFF files.<o:p></o:p></span></p> + +<div style='mso-element:para-border-div;border:solid gray 1.0pt;mso-border-alt: +solid gray .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#E1E1E1'> + +<h3 style='background:#E1E1E1'><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";mso-ansi-language:EN-US'>Version 2.4 (February 2000)<o:p></o:p></span></h3> + +</div> + +<p><span lang=EN-US style='mso-ansi-language:EN-US'>Change in the treatment of +LZW compression in formats TIFF and GIF. Now compression is no longer the +default.<o:p></o:p></span></p> + +<div style='mso-element:para-border-div;border:solid gray 1.0pt;mso-border-alt: +solid gray .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#E1E1E1'> + +<h3 style='background:#E1E1E1'><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";mso-ansi-language:EN-US'>Version 2.3 (June 1998)<o:p></o:p></span></h3> + +</div> + +<p><span lang=EN-US style='mso-ansi-language:EN-US'>Close function of the +access driver for files in memory corrected. JPEG library updated to 6b. +Correction of a problem with the reading of some JPEG files.<o:p></o:p></span></p> + +<div style='mso-element:para-border-div;border:solid gray 1.0pt;mso-border-alt: +solid gray .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#E1E1E1'> + +<h3 style='background:#E1E1E1'><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";mso-ansi-language:EN-US'>Version 2.2 (November 1997)<o:p></o:p></span></h3> + +</div> + +<p><span lang=EN-US style='mso-ansi-language:EN-US'>The definition of the +counter callback was changed to inform, in a parameter, the type of access +being performed, either reading or writing. Type <span class=SpellE><strong>imCallback</strong></span> +defined to make type casting easier when using function <span class=SpellE><strong>imRegisterCallback</strong></span>. +<span class=GramE>Correction of a problem with the <span class=SpellE>makefile</span> +in UNIX, which was generating link errors in some platforms.</span><o:p></o:p></span></p> + +<div style='mso-element:para-border-div;border:solid gray 1.0pt;mso-border-alt: +solid gray .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#E1E1E1'> + +<h3 style='background:#E1E1E1'><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";mso-ansi-language:EN-US'>Version 2.1 (October 1997)<o:p></o:p></span></h3> + +</div> + +<p><span lang=EN-US style='mso-ansi-language:EN-US'>Correction of a problem +with internal memory liberation when reading Map images in TIFF files. +Conversion <b>RGB to Map</b> is now made using the algorithm implemented by <span +class=SpellE>LibJPEG</span>. The algorithm of <span class=SpellE><strong>imResize</strong></span> +was improved for cases in which the size is being reduced instead of increased. +Correction of a problem with functions <span class=SpellE><strong>imImageInfo</strong></span> +and <span class=SpellE><strong>imFileFormat</strong></span>: when the provided +file was not in a format recognized by IM, there was an error in format TGA +which caused these functions to access an invalid memory area.<o:p></o:p></span></p> + +<div style='mso-element:para-border-div;border:solid gray 1.0pt;mso-border-alt: +solid gray .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#E1E1E1'> + +<h3 style='background:#E1E1E1'><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";mso-ansi-language:EN-US'>Version 2.0 (September 1997)<o:p></o:p></span></h3> + +</div> + +<p><span lang=EN-US style='mso-ansi-language:EN-US'>The library was virtually +rewritten to implement a new structure which allowed greater flexibility, +simplifying the addition of new formats. Formats <strong>TGA</strong>, <strong>PCL</strong>, +<strong>JPEG</strong> and <strong>LED</strong> were added to the list of +supported formats, and new functions were added: <strong>imMap2RGB</strong>, <strong>imRGB2Gray</strong>, +<strong>imMap2Gray</strong>, <span class=SpellE><strong>imResize</strong></span>, +<span class=SpellE><strong>imStretch</strong></span>.<o:p></o:p></span></p> + +<div style='mso-element:para-border-div;border:solid gray 1.0pt;mso-border-alt: +solid gray .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#E1E1E1'> + +<h3 style='background:#E1E1E1'><span lang=EN-US style='mso-fareast-font-family: +"Times New Roman";mso-ansi-language:EN-US'>Version 1.1 (June 1996)<o:p></o:p></span></h3> + +</div> + +<p><span class=GramE><span lang=EN-US style='mso-ansi-language:EN-US'>Small +corrections to increase portability.</span></span><span lang=EN-US +style='mso-ansi-language:EN-US'> <span class=GramE>Changes in return codes.</span> +Identifiers were created to return codes and predefined parameters. </span>Online +manual <span class=SpellE>concluded</span>.</p> + +<div style='mso-element:para-border-div;border:solid gray 1.0pt;mso-border-alt: +solid gray .75pt;padding:3.0pt 3.0pt 3.0pt 3.0pt;background:#E1E1E1'> + +<h3 style='background:#E1E1E1'><span style='mso-fareast-font-family:"Times New Roman"'>Version +1.0 (<span class=SpellE>October</span> 1995)<o:p></o:p></span></h3> + +</div> + +</div> </body> -</html>
\ No newline at end of file +</html> diff --git a/include/im_file.h b/include/im_file.h index a35c82a..33ef12e 100644 --- a/include/im_file.h +++ b/include/im_file.h @@ -23,7 +23,7 @@ extern "C" { * \ingroup file */ -/** \brief Image File Format Base (SDK Use Only) +/** \brief Image File Format Base Class (SDK Use Only) * * \par * Base container to hold format independent state variables. diff --git a/include/im_format.h b/include/im_format.h index 9120676..6ee0473 100644 --- a/include/im_format.h +++ b/include/im_format.h @@ -11,27 +11,20 @@ #define __IM_FORMAT_H -/** \brief Image File Format Driver (SDK Use Only) +class imFormat; + +/** \brief Image File Format Virtual Class (SDK Use Only) * * \par * Virtual Base class for file formats. All file formats inherit from this class. * \ingroup filesdk */ -class imFormat: public _imFile +class imFileFormatBase: public _imFile { public: - const char* format; - const char* desc; - const char* ext; - const char** comp; - int comp_count, - can_sequence; + const imFormat* iformat; - imFormat(const char* _format, const char* _desc, const char* _ext, - const char** _comp, int _comp_count, int _can_sequence) - :format(_format), desc(_desc), ext(_ext), comp(_comp), - comp_count(_comp_count), can_sequence(_can_sequence) - {} - virtual ~imFormat() {} + imFileFormatBase(const imFormat* _iformat): iformat(_iformat) {} + virtual ~imFileFormatBase() {} imAttribTable* AttribTable() {return (imAttribTable*)this->attrib_table;} @@ -45,7 +38,32 @@ public: virtual int ReadImageData(void* data) = 0; virtual int WriteImageInfo() = 0; // Should update compression virtual int WriteImageData(void* data) = 0; // Must update image_count +}; + +/** \brief Image File Format Descriptor (SDK Use Only) + * + * \par + * All file formats must define these informations. They are stored by \ref imFormatRegister. + * \ingroup filesdk */ +class imFormat +{ +public: + const char* format; + const char* desc; + const char* ext; + const char** comp; + int comp_count, + can_sequence; + + virtual imFileFormatBase* Create() const = 0; virtual int CanWrite(const char* compression, int color_mode, int data_type) const = 0; + + imFormat(const char* _format, const char* _desc, const char* _ext, + const char** _comp, int _comp_count, int _can_sequence) + :format(_format), desc(_desc), ext(_ext), comp(_comp), + comp_count(_comp_count), can_sequence(_can_sequence) + {} + virtual ~imFormat() {} }; extern "C" @@ -56,15 +74,15 @@ extern "C" /* Opens a file with the respective format driver * Uses the file extension to speed up the search for the format driver. * Used by "im_file.cpp" only. */ -imFormat* imFormatOpen(const char* file_name, int *error); +imFileFormatBase* imFileFormatBaseOpen(const char* file_name, int *error); /* Opens a file with the given format * Used by "im_file.cpp" only. */ -imFormat* imFormatOpenAs(const char* file_name, const char* format, int *error); +imFileFormatBase* imFileFormatBaseOpenAs(const char* file_name, const char* format, int *error); /* Creates a file using the given format driver. * Used by "im_file.cpp" only. */ -imFormat* imFormatNew(const char* file_name, const char* format, int *error); +imFileFormatBase* imFileFormatBaseNew(const char* file_name, const char* format, int *error); /* File Format SDK */ diff --git a/include/im_format_raw.h b/include/im_format_raw.h index 8027f82..07cc81c 100644 --- a/include/im_format_raw.h +++ b/include/im_format_raw.h @@ -54,7 +54,7 @@ extern "C" { StartOffset, SwitchType, ByteOrder, Padding IM_INT (1) \endverbatim * \ingroup format */ -imFormat* imFormatInitRAW(void); +imFileFormatBase* imFormatInitRAW(void); #if defined(__cplusplus) diff --git a/mak.vc8/im.sln b/mak.vc8/im.sln index 27a3077..201b401 100644 --- a/mak.vc8/im.sln +++ b/mak.vc8/im.sln @@ -105,13 +105,6 @@ Global {CB86E507-6B6C-4FDF-9B6D-27AA123AE463}.Release|Win32.ActiveCfg = Debug|Win32 {CB86E507-6B6C-4FDF-9B6D-27AA123AE463}.Release|Win32.Build.0 = Debug|Win32 {CB86E507-6B6C-4FDF-9B6D-27AA123AE463}.Release|x64.ActiveCfg = Debug|Win32 - {909637FA-8229-45A9-9F42-53D8ED5F91C5}.Debug|Win32.ActiveCfg = Debug|Win32 - {909637FA-8229-45A9-9F42-53D8ED5F91C5}.Debug|Win32.Build.0 = Debug|Win32 - {909637FA-8229-45A9-9F42-53D8ED5F91C5}.Debug|x64.ActiveCfg = Debug|x64 - {909637FA-8229-45A9-9F42-53D8ED5F91C5}.Debug|x64.Build.0 = Debug|x64 - {909637FA-8229-45A9-9F42-53D8ED5F91C5}.Release|Win32.ActiveCfg = Debug|x64 - {909637FA-8229-45A9-9F42-53D8ED5F91C5}.Release|x64.ActiveCfg = Debug|x64 - {909637FA-8229-45A9-9F42-53D8ED5F91C5}.Release|x64.Build.0 = Debug|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/mak.vc8/im_capture.vcproj b/mak.vc8/im_capture.vcproj index e7a8555..1e16bef 100644 --- a/mak.vc8/im_capture.vcproj +++ b/mak.vc8/im_capture.vcproj @@ -4,7 +4,6 @@ Version="8,00" Name="im_capture" ProjectGUID="{CB868607-6B6C-4CDF-9B6D-27AA925AE473}" - TargetFrameworkVersion="131072" > <Platforms> <Platform @@ -42,7 +41,7 @@ <Tool Name="VCCLCompilerTool" Optimization="0" - AdditionalIncludeDirectories="../include;../src;d:\LNG\DXSDK\Include" + AdditionalIncludeDirectories="../include;../src;d:\LNG\winSDK\Include;d:/lng/dxsdk/include" PreprocessorDefinitions="WIN32,_DEBUG,_LIB,_CRT_SECURE_NO_DEPRECATE" ExceptionHandling="0" BasicRuntimeChecks="3" diff --git a/mak.vc8/im_wmv.vcproj b/mak.vc8/im_wmv.vcproj index f6d1b68..93241dc 100644 --- a/mak.vc8/im_wmv.vcproj +++ b/mak.vc8/im_wmv.vcproj @@ -4,7 +4,6 @@ Version="8,00" Name="im_wmv" ProjectGUID="{CB86E507-6B6C-4FDF-9B6D-27AA925AE463}" - TargetFrameworkVersion="131072" > <Platforms> <Platform @@ -43,7 +42,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="../include;../src;d:\LNG\WMFSDK11\include" - PreprocessorDefinitions="WIN32,_DEBUG,_LIB,_CRT_SECURE_NO_DEPRECATE" + PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NON_CONFORMING_SWPRINTFS" ExceptionHandling="0" BasicRuntimeChecks="3" RuntimeLibrary="0" diff --git a/src/im_file.cpp b/src/im_file.cpp index 81e6128..a43b0d4 100644 --- a/src/im_file.cpp +++ b/src/im_file.cpp @@ -2,7 +2,7 @@ * \brief File Access * * See Copyright Notice in im_lib.h - * $Id: im_file.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_file.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ #include <stdlib.h> @@ -49,66 +49,66 @@ imFile* imFileOpen(const char* file_name, int *error) { assert(file_name); - imFormat* iformat = imFormatOpen(file_name, error); - if (!iformat) + imFileFormatBase* ifileformat = imFileFormatBaseOpen(file_name, error); + if (!ifileformat) return NULL; - imFileClear(iformat); + imFileClear(ifileformat); - iformat->attrib_table = new imAttribTable(599); + ifileformat->attrib_table = new imAttribTable(599); - iformat->counter = imCounterBegin(file_name); + ifileformat->counter = imCounterBegin(file_name); - return iformat; + return ifileformat; } imFile* imFileOpenAs(const char* file_name, const char* format, int *error) { assert(file_name); - imFormat* iformat = imFormatOpenAs(file_name, format, error); - if (!iformat) + imFileFormatBase* ifileformat = imFileFormatBaseOpenAs(file_name, format, error); + if (!ifileformat) return NULL; - imFileClear(iformat); + imFileClear(ifileformat); - iformat->attrib_table = new imAttribTable(599); + ifileformat->attrib_table = new imAttribTable(599); - iformat->counter = imCounterBegin(file_name); + ifileformat->counter = imCounterBegin(file_name); - return iformat; + return ifileformat; } imFile* imFileNew(const char* file_name, const char* format, int *error) { assert(file_name); - imFormat* iformat = imFormatNew(file_name, format, error); - if (!iformat) + imFileFormatBase* ifileformat = imFileFormatBaseNew(file_name, format, error); + if (!ifileformat) return NULL; - imFileClear(iformat); + imFileClear(ifileformat); - iformat->is_new = 1; - iformat->image_count = 0; - iformat->compression[0] = 0; + ifileformat->is_new = 1; + ifileformat->image_count = 0; + ifileformat->compression[0] = 0; - iformat->attrib_table = new imAttribTable(101); + ifileformat->attrib_table = new imAttribTable(101); - iformat->counter = imCounterBegin(file_name); + ifileformat->counter = imCounterBegin(file_name); - return iformat; + return ifileformat; } void imFileClose(imFile* ifile) { assert(ifile); - imFormat* iformat = (imFormat*)ifile; + imFileFormatBase* ifileformat = (imFileFormatBase*)ifile; imAttribTable* attrib_table = (imAttribTable*)ifile->attrib_table; imCounterEnd(ifile->counter); - iformat->Close(); + ifileformat->Close(); if (ifile->line_buffer) free(ifile->line_buffer); @@ -118,16 +118,16 @@ void imFileClose(imFile* ifile) void* imFileHandle(imFile* ifile, int index) { assert(ifile); - imFormat* iformat = (imFormat*)ifile; - return iformat->Handle(index); + imFileFormatBase* ifileformat = (imFileFormatBase*)ifile; + return ifileformat->Handle(index); } void imFileSetAttribute(imFile* ifile, const char* attrib, int data_type, int count, const void* data) { assert(ifile); assert(attrib); - imFormat* iformat = (imFormat*)ifile; - imAttribTable* atable = (imAttribTable*)iformat->attrib_table; + imFileFormatBase* ifileformat = (imFileFormatBase*)ifile; + imAttribTable* atable = (imAttribTable*)ifileformat->attrib_table; if (data) atable->Set(attrib, data_type, count, data); else @@ -138,8 +138,8 @@ const void* imFileGetAttribute(imFile* ifile, const char* attrib, int *data_type { assert(ifile); assert(attrib); - imFormat* iformat = (imFormat*)ifile; - imAttribTable* attrib_table = (imAttribTable*)iformat->attrib_table; + imFileFormatBase* ifileformat = (imFileFormatBase*)ifile; + imAttribTable* attrib_table = (imAttribTable*)ifileformat->attrib_table; return attrib_table->Get(attrib, data_type, count); } @@ -167,10 +167,10 @@ void imFileGetAttributeList(imFile* ifile, char** attrib, int *attrib_count) void imFileGetInfo(imFile* ifile, char* format, char* compression, int *image_count) { assert(ifile); - imFormat* iformat = (imFormat*)ifile; + imFileFormatBase* ifileformat = (imFileFormatBase*)ifile; if(compression) strcpy(compression, ifile->compression); - if(format) strcpy(format, iformat->format); + if(format) strcpy(format, ifileformat->iformat->format); if (image_count) *image_count = ifile->image_count; } @@ -214,7 +214,7 @@ int imFileReadImageInfo(imFile* ifile, int index, int *width, int *height, int * { assert(ifile); assert(!ifile->is_new); - imFormat* iformat = (imFormat*)ifile; + imFileFormatBase* ifileformat = (imFileFormatBase*)ifile; if (index >= ifile->image_count) return IM_ERR_DATA; @@ -233,7 +233,7 @@ int imFileReadImageInfo(imFile* ifile, int index, int *width, int *height, int * ifile->convert_bpp = 0; ifile->switch_type = 0; - int error = iformat->ReadImageInfo(index); + int error = ifileformat->ReadImageInfo(index); if (error) return error; if (!imImageCheckFormat(ifile->file_color_mode, ifile->file_data_type)) @@ -322,7 +322,7 @@ int imFileReadImageData(imFile* ifile, void* data, int convert2bitmap, int color { assert(ifile); assert(!ifile->is_new); - imFormat* iformat = (imFormat*)ifile; + imFileFormatBase* ifileformat = (imFileFormatBase*)ifile; if (ifile->image_index == -1) return IM_ERR_DATA; @@ -350,7 +350,7 @@ int imFileReadImageData(imFile* ifile, void* data, int convert2bitmap, int color imFileLineBufferInit(ifile); - int ret = iformat->ReadImageData(data); + int ret = ifileformat->ReadImageData(data); // here we can NOT change the file_color_mode we already returned to the user // so just check for gray and binary consistency @@ -389,12 +389,12 @@ int imFileWriteImageInfo(imFile* ifile, int width, int height, int user_color_mo { assert(ifile); assert(ifile->is_new); - imFormat* iformat = (imFormat*)ifile; + imFileFormatBase* ifileformat = (imFileFormatBase*)ifile; if (!imImageCheckFormat(user_color_mode, user_data_type)) return IM_ERR_DATA; - int error = iformat->CanWrite(ifile->compression, user_color_mode, user_data_type); + int error = ifileformat->iformat->CanWrite(ifile->compression, user_color_mode, user_data_type); if (error) return error; ifile->width = width; @@ -409,7 +409,7 @@ int imFileWriteImageInfo(imFile* ifile, int width, int height, int user_color_mo ifile->palette[1] = imColorEncode(255, 255, 255); } - return iformat->WriteImageInfo(); + return ifileformat->WriteImageInfo(); } int imFileWriteImageData(imFile* ifile, void* data) @@ -417,12 +417,12 @@ int imFileWriteImageData(imFile* ifile, void* data) assert(ifile); assert(ifile->is_new); assert(data); - imFormat* iformat = (imFormat*)ifile; + imFileFormatBase* ifileformat = (imFileFormatBase*)ifile; if (!imFileCheckConversion(ifile)) return IM_ERR_DATA; imFileLineBufferInit(ifile); - return iformat->WriteImageData(data); + return ifileformat->WriteImageData(data); } diff --git a/src/im_fileraw.cpp b/src/im_fileraw.cpp index da7ef81..530b6c9 100644 --- a/src/im_fileraw.cpp +++ b/src/im_fileraw.cpp @@ -2,7 +2,7 @@ * \brief RAW File Format Open/New Functions * * See Copyright Notice in im_lib.h - * $Id: im_fileraw.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_fileraw.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ #include "im.h" @@ -21,7 +21,7 @@ imFile* imFileOpenRaw(const char* file_name, int *error) { assert(file_name); - imFormat* iformat = imFormatInitRAW(); + imFileFormatBase* iformat = imFormatInitRAW(); *error = iformat->Open(file_name); if (*error) { @@ -42,7 +42,7 @@ imFile* imFileNewRaw(const char* file_name, int *error) { assert(file_name); - imFormat* iformat = imFormatInitRAW(); + imFileFormatBase* iformat = imFormatInitRAW(); *error = iformat->New(file_name); if (*error) { diff --git a/src/im_format.cpp b/src/im_format.cpp index be9892c..d389743 100644 --- a/src/im_format.cpp +++ b/src/im_format.cpp @@ -2,7 +2,7 @@ * \brief File Format Access * * See Copyright Notice in im_lib.h - * $Id: im_format.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_format.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ @@ -163,7 +163,7 @@ static char* utlFileGetExt(const char *file_name) return file_ext; } -imFormat* imFormatOpen(const char* file_name, int *error) +imFileFormatBase* imFileFormatBaseOpen(const char* file_name, int *error) { int i; @@ -191,18 +191,20 @@ imFormat* imFormatOpen(const char* file_name, int *error) { ext_mark[i] = 1; // Mark this format to avoid testing it again in the next phase - *error = iformat->Open(file_name); + imFileFormatBase* ifileformat = iformat->Create(); + *error = ifileformat->Open(file_name); if (*error != IM_ERR_NONE && *error != IM_ERR_FORMAT) // Error situation that must abort { // Only IM_ERR_FORMAT is a valid error here free(extension); delete [] ext_mark; + delete ifileformat; return NULL; } else if (*error == IM_ERR_NONE) // Sucessfully oppened the file { free(extension); delete [] ext_mark; - return iformat; + return ifileformat; } } } @@ -218,17 +220,18 @@ imFormat* imFormatOpen(const char* file_name, int *error) if (!ext_mark[i]) { imFormat* iformat = iFormatList[i]; - - *error = iformat->Open(file_name); + imFileFormatBase* ifileformat = iformat->Create(); + *error = ifileformat->Open(file_name); if (*error != IM_ERR_NONE && *error != IM_ERR_FORMAT) // Error situation that must abort { // Only IM_ERR_FORMAT is a valid error here delete [] ext_mark; + delete ifileformat; return NULL; } else if (*error == IM_ERR_NONE) // Sucessfully oppened the file { delete [] ext_mark; - return iformat; + return ifileformat; } } } @@ -238,7 +241,7 @@ imFormat* imFormatOpen(const char* file_name, int *error) return NULL; } -imFormat* imFormatOpenAs(const char* file_name, const char* format, int *error) +imFileFormatBase* imFileFormatBaseOpenAs(const char* file_name, const char* format, int *error) { assert(file_name); assert(format); @@ -257,17 +260,21 @@ imFormat* imFormatOpenAs(const char* file_name, const char* format, int *error) return NULL; } - *error = iformat->Open(file_name); + imFileFormatBase* ifileformat = iformat->Create(); + *error = ifileformat->Open(file_name); if (*error != IM_ERR_NONE && *error != IM_ERR_FORMAT) // Error situation that must abort + { + delete ifileformat; return NULL; + } else if (*error == IM_ERR_NONE) // Sucessfully oppened the file - return iformat; + return ifileformat; *error = IM_ERR_FORMAT; return NULL; } -imFormat* imFormatNew(const char* file_name, const char* format, int *error) +imFileFormatBase* imFileFormatBaseNew(const char* file_name, const char* format, int *error) { assert(file_name); assert(format); @@ -280,10 +287,13 @@ imFormat* imFormatNew(const char* file_name, const char* format, int *error) return NULL; } - *error = iformat->New(file_name); + imFileFormatBase* ifileformat = iformat->Create(); + *error = ifileformat->New(file_name); if (*error) + { + delete ifileformat; return NULL; + } - return iformat; + return ifileformat; } - diff --git a/src/im_format_avi.cpp b/src/im_format_avi.cpp index 3de98d4..632e45b 100644 --- a/src/im_format_avi.cpp +++ b/src/im_format_avi.cpp @@ -2,7 +2,7 @@ * \brief AVI - Windows Audio-Video Interleaved RIFF * * See Copyright Notice in im_lib.h - * $Id: im_format_avi.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_format_avi.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ #include "im_format.h" @@ -41,7 +41,7 @@ static const char* iAVICompTable[15] = "CUSTOM" // (show compression dialog) }; -class imFormatAVI: public imFormat +class imFileFormatAVI: public imFileFormatBase { PAVIFILE file; PAVISTREAM stream; @@ -63,15 +63,8 @@ class imFormatAVI: public imFormat void InitMasks(imDib* dib); public: - imFormatAVI() - :imFormat("AVI", - "Windows Audio-Video Interleaved RIFF", - "*.avi;", - iAVICompTable, - 15, - 1) - {} - ~imFormatAVI() {} + imFileFormatAVI(const imFormat* _iformat): imFileFormatBase(_iformat) {} + ~imFileFormatAVI() {} int Open(const char* file_name); int New(const char* file_name); @@ -81,6 +74,22 @@ public: int ReadImageData(void* data); int WriteImageInfo(); int WriteImageData(void* data); +}; + +class imFormatAVI: public imFormat +{ +public: + imFormatAVI() + :imFormat("AVI", + "Windows Audio-Video Interleaved RIFF", + "*.avi;", + iAVICompTable, + 15, + 1) + {} + ~imFormatAVI() {} + + imFileFormatBase* Create(void) const { return new imFileFormatAVI(this); } int CanWrite(const char* compression, int color_mode, int data_type) const; }; @@ -89,9 +98,9 @@ void imFormatRegisterAVI(void) imFormatRegister(new imFormatAVI()); } -int imFormatAVI::Open(const char* file_name) +int imFileFormatAVI::Open(const char* file_name) { - /* initializes avi file library */ + /* initializes avi file library, can be called many times */ AVIFileInit(); /* open existing file */ @@ -152,9 +161,9 @@ int imFormatAVI::Open(const char* file_name) return IM_ERR_NONE; } -int imFormatAVI::New(const char* file_name) +int imFileFormatAVI::New(const char* file_name) { - /* initializes avi file library */ + /* initializes avi file library, can be called many times */ AVIFileInit(); /* creates a new file */ @@ -179,7 +188,7 @@ int imFormatAVI::New(const char* file_name) return IM_ERR_NONE; } -void imFormatAVI::Close() +void imFileFormatAVI::Close() { if (this->dib) imDibDestroy(this->dib); @@ -193,10 +202,10 @@ void imFormatAVI::Close() if (this->stream) AVIStreamRelease(this->stream); AVIFileRelease(this->file); - AVIFileExit(); + AVIFileExit(); /* called one for each AVIFileInit */ } -void* imFormatAVI::Handle(int index) +void* imFileFormatAVI::Handle(int index) { if (index == 1) return (void*)this->file; @@ -206,7 +215,7 @@ void* imFormatAVI::Handle(int index) return NULL; } -int imFormatAVI::ReadImageInfo(int index) +int imFileFormatAVI::ReadImageInfo(int index) { this->current_frame = index; @@ -280,7 +289,7 @@ int imFormatAVI::ReadImageInfo(int index) return IM_ERR_NONE; } -int imFormatAVI::WriteImageInfo() +int imFileFormatAVI::WriteImageInfo() { if (dib) { @@ -423,7 +432,7 @@ int imFormatAVI::WriteImageInfo() return IM_ERR_NONE; } -void imFormatAVI::ReadPalette(unsigned char* bmp_colors) +void imFileFormatAVI::ReadPalette(unsigned char* bmp_colors) { /* convert the color map to the IM format */ for (int c = 0; c < this->palette_count; c++) @@ -435,7 +444,7 @@ void imFormatAVI::ReadPalette(unsigned char* bmp_colors) } } -void imFormatAVI::WritePalette(unsigned char* bmp_colors) +void imFileFormatAVI::WritePalette(unsigned char* bmp_colors) { /* convert the color map to the IM format */ for (int c = 0; c < this->palette_count; c++) @@ -446,7 +455,7 @@ void imFormatAVI::WritePalette(unsigned char* bmp_colors) } } -void imFormatAVI::InitMasks(imDib* dib) +void imFileFormatAVI::InitMasks(imDib* dib) { if (dib->bmih->biCompression == BI_BITFIELDS) { @@ -495,7 +504,7 @@ void imFormatAVI::InitMasks(imDib* dib) } } -void imFormatAVI::FixRGB(int bpp) +void imFileFormatAVI::FixRGB(int bpp) { int x; @@ -552,7 +561,7 @@ void imFormatAVI::FixRGB(int bpp) } } -int imFormatAVI::ReadImageData(void* data) +int imFileFormatAVI::ReadImageData(void* data) { imCounterTotal(this->counter, this->height, "Reading AVI Frame..."); @@ -596,7 +605,7 @@ int imFormatAVI::ReadImageData(void* data) return IM_ERR_NONE; } -int imFormatAVI::WriteImageData(void* data) +int imFileFormatAVI::WriteImageData(void* data) { imCounterTotal(this->counter, this->height, "Writing AVI Frame..."); diff --git a/src/im_format_bmp.cpp b/src/im_format_bmp.cpp index 809169b..5ec4938 100644 --- a/src/im_format_bmp.cpp +++ b/src/im_format_bmp.cpp @@ -2,7 +2,7 @@ * \brief BMP - Windows Device Independent Bitmap * * See Copyright Notice in im_lib.h - * $Id: im_format_bmp.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_format_bmp.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ #include "im_format.h" @@ -283,7 +283,7 @@ static const char* iBMPCompTable[2] = "RLE" }; -class imFormatBMP: public imFormat +class imFileFormatBMP: public imFileFormatBase { imBinFile* handle; /* the binary file handle */ unsigned short bpp; /* number of bits per pixel */ @@ -299,6 +299,22 @@ class imFormatBMP: public imFormat void FixRGBOrder(); public: + imFileFormatBMP(const imFormat* _iformat): imFileFormatBase(_iformat) {} + ~imFileFormatBMP() {} + + int Open(const char* file_name); + int New(const char* file_name); + void Close(); + void* Handle(int index); + int ReadImageInfo(int index); + int ReadImageData(void* data); + int WriteImageInfo(); + int WriteImageData(void* data); +}; + +class imFormatBMP: public imFormat +{ +public: imFormatBMP() :imFormat("BMP", "Windows Device Independent Bitmap", @@ -309,23 +325,17 @@ public: {} ~imFormatBMP() {} - int Open(const char* file_name); - int New(const char* file_name); - void Close(); - void* Handle(int index); - int ReadImageInfo(int index); - int ReadImageData(void* data); - int WriteImageInfo(); - int WriteImageData(void* data); + imFileFormatBase* Create(void) const { return new imFileFormatBMP(this); } int CanWrite(const char* compression, int color_mode, int data_type) const; }; + void imFormatRegisterBMP(void) { imFormatRegister(new imFormatBMP()); } -int imFormatBMP::Open(const char* file_name) +int imFileFormatBMP::Open(const char* file_name) { unsigned short id; unsigned int dword; @@ -404,7 +414,7 @@ int imFormatBMP::Open(const char* file_name) return IM_ERR_NONE; } -int imFormatBMP::New(const char* file_name) +int imFileFormatBMP::New(const char* file_name) { /* opens the binary file for writing with intel byte order */ handle = imBinFileNew(file_name); @@ -418,12 +428,12 @@ int imFormatBMP::New(const char* file_name) return IM_ERR_NONE; } -void imFormatBMP::Close() +void imFileFormatBMP::Close() { imBinFileClose(handle); } -void* imFormatBMP::Handle(int index) +void* imFileFormatBMP::Handle(int index) { if (index == 0) return (void*)this->handle; @@ -431,7 +441,7 @@ void* imFormatBMP::Handle(int index) return NULL; } -int imFormatBMP::ReadImageInfo(int index) +int imFileFormatBMP::ReadImageInfo(int index) { (void)index; unsigned int dword; @@ -614,7 +624,7 @@ int imFormatBMP::ReadImageInfo(int index) return IM_ERR_NONE; } -int imFormatBMP::WriteImageInfo() +int imFileFormatBMP::WriteImageInfo() { // force bottom up orientation this->file_data_type = IM_BYTE; @@ -735,7 +745,7 @@ int imFormatBMP::WriteImageInfo() return IM_ERR_NONE; } -int imFormatBMP::ReadPalette() +int imFileFormatBMP::ReadPalette() { int nc; if (this->is_os2) @@ -762,7 +772,7 @@ int imFormatBMP::ReadPalette() return IM_ERR_NONE; } -int imFormatBMP::WritePalette() +int imFileFormatBMP::WritePalette() { unsigned char bmp_colors[256 * 4]; @@ -783,7 +793,7 @@ int imFormatBMP::WritePalette() return IM_ERR_NONE; } -void imFormatBMP::FixRGBOrder() +void imFileFormatBMP::FixRGBOrder() { int x; @@ -844,7 +854,7 @@ void imFormatBMP::FixRGBOrder() } } -int imFormatBMP::ReadImageData(void* data) +int imFileFormatBMP::ReadImageData(void* data) { imCounterTotal(this->counter, this->height, "Reading BMP..."); @@ -879,7 +889,7 @@ int imFormatBMP::ReadImageData(void* data) return IM_ERR_NONE; } -int imFormatBMP::WriteImageData(void* data) +int imFileFormatBMP::WriteImageData(void* data) { imCounterTotal(this->counter, this->height, "Writing BMP..."); diff --git a/src/im_format_ecw.cpp b/src/im_format_ecw.cpp index 0b77b56..bba99b0 100644 --- a/src/im_format_ecw.cpp +++ b/src/im_format_ecw.cpp @@ -23,20 +23,14 @@ static const char* iECWCompTable[2] = "JPEG-2000", }; -class imFormatECW: public imFormat +class imFileFormatECW: public imFileFormatBase { NCSFileView *pNCSFileView; // NCSEcwCompressClient *pClient; public: - imFormatECW() - :imFormat("ECW", - "ECW JPEG-2000 File Format", - "*.ecw;*.jp2;*.j2k;*.jpc;*.j2c;", - iECWCompTable, - 2, - 0) - {} + imFileFormatECW(const imFormat* _iformat): imFileFormatBase(_iformat) {} + ~imFileFormatECW() {} int Open(const char* file_name); int New(const char* file_name); @@ -46,6 +40,22 @@ public: int ReadImageData(void* data); int WriteImageInfo(){return 0;} // do nothing for now; int WriteImageData(void* data){(void)data; return 0;} // do nothing for now; +}; + +class imFormatECW: public imFormat +{ +public: + imFormatECW() + :imFormat("ECW", + "ECW JPEG-2000 File Format", + "*.ecw;*.jp2;*.j2k;*.jpc;*.j2c;", + iECWCompTable, + 2, + 0) + {} + ~imFormatECW() {} + + imFileFormatBase* Create(void) const { return new imFileFormatECW(this); } int CanWrite(const char* compression, int color_mode, int data_type) const; }; @@ -54,7 +64,7 @@ void imFormatRegisterECW(void) imFormatRegister(new imFormatECW()); } -int imFormatECW::Open(const char* file_name) +int imFileFormatECW::Open(const char* file_name) { NCSError eError = NCScbmOpenFileView((char*)file_name, &this->pNCSFileView, NULL); if (eError != NCS_SUCCESS) @@ -82,7 +92,7 @@ int imFormatECW::Open(const char* file_name) return IM_ERR_NONE; } -int imFormatECW::New(const char* file_name) +int imFileFormatECW::New(const char* file_name) { strcpy(this->compression, "JPEG-2000"); this->image_count = 1; @@ -91,7 +101,7 @@ int imFormatECW::New(const char* file_name) return IM_ERR_FORMAT; } -void imFormatECW::Close() +void imFileFormatECW::Close() { if (this->is_new) ;// NCSEcwCompressClose(this->pClient); @@ -99,7 +109,7 @@ void imFormatECW::Close() NCScbmCloseFileView(this->pNCSFileView); } -void* imFormatECW::Handle(int index) +void* imFileFormatECW::Handle(int index) { (void)index; @@ -109,7 +119,7 @@ void* imFormatECW::Handle(int index) return (void*)this->pNCSFileView; } -int imFormatECW::ReadImageInfo(int index) +int imFileFormatECW::ReadImageInfo(int index) { NCSFileViewFileInfoEx *pNCSFileInfo; imAttribTable* attrib_table = AttribTable(); @@ -245,7 +255,7 @@ static void iCopyDataBuffer(UINT8 **ppOutputLine, imbyte* line_buffer, int nBand memcpy(line_buffer, ppOutputLine[0], nBands*type_size*view_width); } -int imFormatECW::ReadImageData(void* data) +int imFileFormatECW::ReadImageData(void* data) { imAttribTable* attrib_table = AttribTable(); int i, *attrib_data, view_width, view_height, diff --git a/src/im_format_gif.cpp b/src/im_format_gif.cpp index ce371ba..390271a 100644 --- a/src/im_format_gif.cpp +++ b/src/im_format_gif.cpp @@ -2,7 +2,7 @@ * \brief GIF - Graphics Interchange Format * * See Copyright Notice in im_lib.h - * $Id: im_format_gif.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_format_gif.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ #include "im_format.h" @@ -932,7 +932,7 @@ static const char* iGIFCompTable[1] = "LZW" }; -class imFormatGIF: public imFormat +class imFileFormatGIF: public imFileFormatBase { imBinFile* handle; iGIFData gif_data; @@ -941,6 +941,22 @@ class imFormatGIF: public imFormat int GIFWriteImageInfo(); public: + imFileFormatGIF(const imFormat* _iformat): imFileFormatBase(_iformat) {} + ~imFileFormatGIF() {} + + int Open(const char* file_name); + int New(const char* file_name); + void Close(); + void* Handle(int index); + int ReadImageInfo(int index); + int ReadImageData(void* data); + int WriteImageInfo(); + int WriteImageData(void* data); +}; + +class imFormatGIF: public imFormat +{ +public: imFormatGIF() :imFormat("GIF", "Graphics Interchange Format", @@ -951,14 +967,7 @@ public: {} ~imFormatGIF() {} - int Open(const char* file_name); - int New(const char* file_name); - void Close(); - void* Handle(int index); - int ReadImageInfo(int index); - int ReadImageData(void* data); - int WriteImageInfo(); - int WriteImageData(void* data); + imFileFormatBase* Create(void) const { return new imFileFormatGIF(this); } int CanWrite(const char* compression, int color_mode, int data_type) const; }; @@ -967,7 +976,7 @@ void imFormatRegisterGIF(void) imFormatRegister(new imFormatGIF()); } -int imFormatGIF::Open(const char* file_name) +int imFileFormatGIF::Open(const char* file_name) { this->handle = imBinFileOpen(file_name); if (this->handle == NULL) @@ -1044,7 +1053,7 @@ int imFormatGIF::Open(const char* file_name) return IM_ERR_NONE; } -int imFormatGIF::New(const char* file_name) +int imFileFormatGIF::New(const char* file_name) { this->handle = imBinFileNew(file_name); if (this->handle == NULL) @@ -1070,7 +1079,7 @@ int imFormatGIF::New(const char* file_name) return IM_ERR_NONE; } -void imFormatGIF::Close() +void imFileFormatGIF::Close() { if (this->is_new && !imBinFileError(this->handle)) imBinFileWrite(this->handle, (void*)";", 1, 1); @@ -1078,7 +1087,7 @@ void imFormatGIF::Close() imBinFileClose(this->handle); } -void* imFormatGIF::Handle(int index) +void* imFileFormatGIF::Handle(int index) { if (index == 0) return (void*)this->handle; @@ -1086,7 +1095,7 @@ void* imFormatGIF::Handle(int index) return NULL; } -int imFormatGIF::GIFReadImageInfo() +int imFileFormatGIF::GIFReadImageInfo() { imbyte byte_value; imushort word_value; @@ -1165,7 +1174,7 @@ int imFormatGIF::GIFReadImageInfo() return IM_ERR_NONE; } -int imFormatGIF::GIFWriteImageInfo() +int imFileFormatGIF::GIFWriteImageInfo() { this->file_data_type = IM_BYTE; this->file_color_mode = imColorModeSpace(this->user_color_mode); @@ -1235,7 +1244,7 @@ int imFormatGIF::GIFWriteImageInfo() return IM_ERR_NONE; } -int imFormatGIF::ReadImageInfo(int index) +int imFileFormatGIF::ReadImageInfo(int index) { imAttribTable* attrib_table = AttribTable(); attrib_table->RemoveAll(); @@ -1316,7 +1325,7 @@ int imFormatGIF::ReadImageInfo(int index) return IM_ERR_NONE; } -int imFormatGIF::WriteImageInfo() +int imFileFormatGIF::WriteImageInfo() { this->file_color_mode = imColorModeSpace(this->user_color_mode); this->file_color_mode |= IM_TOPDOWN; @@ -1396,7 +1405,7 @@ int imFormatGIF::WriteImageInfo() return iGIFCompressOutput(&gif_data, handle, gif_data.ClearCode); } -int imFormatGIF::ReadImageData(void* data) +int imFileFormatGIF::ReadImageData(void* data) { imCounterTotal(this->counter, this->height, "Reading GIF..."); @@ -1433,7 +1442,7 @@ int imFormatGIF::ReadImageData(void* data) return IM_ERR_NONE; } -int imFormatGIF::WriteImageData(void* data) +int imFileFormatGIF::WriteImageData(void* data) { imCounterTotal(this->counter, this->height, "Writing GIF..."); diff --git a/src/im_format_ico.cpp b/src/im_format_ico.cpp index d4d1884..b10f30e 100644 --- a/src/im_format_ico.cpp +++ b/src/im_format_ico.cpp @@ -2,7 +2,7 @@ * \brief ICO - Windows Icon * * See Copyright Notice in im_lib.h - * $Id: im_format_ico.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_format_ico.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ #include "im_format.h" @@ -49,7 +49,7 @@ static const char* iICOCompTable[1] = "NONE" }; -class imFormatICO: public imFormat +class imFileFormatICO: public imFileFormatBase { imBinFile* handle; /* the binary file handle */ unsigned short bpp; /* number of bits per pixel */ @@ -62,6 +62,22 @@ class imFormatICO: public imFormat void FixRGBOrder(); public: + imFileFormatICO(const imFormat* _iformat): imFileFormatBase(_iformat) {} + ~imFileFormatICO() {} + + int Open(const char* file_name); + int New(const char* file_name); + void Close(); + void* Handle(int index); + int ReadImageInfo(int index); + int ReadImageData(void* data); + int WriteImageInfo(); + int WriteImageData(void* data); +}; + +class imFormatICO: public imFormat +{ +public: imFormatICO() :imFormat("ICO", "Windows Icon", @@ -72,23 +88,17 @@ public: {} ~imFormatICO() {} - int Open(const char* file_name); - int New(const char* file_name); - void Close(); - void* Handle(int index); - int ReadImageInfo(int index); - int ReadImageData(void* data); - int WriteImageInfo(); - int WriteImageData(void* data); + imFileFormatBase* Create(void) const { return new imFileFormatICO(this); } int CanWrite(const char* compression, int color_mode, int data_type) const; }; + void imFormatRegisterICO(void) { imFormatRegister(new imFormatICO()); } -int imFormatICO::Open(const char* file_name) +int imFileFormatICO::Open(const char* file_name) { unsigned short word; @@ -145,7 +155,7 @@ int imFormatICO::Open(const char* file_name) return IM_ERR_NONE; } -int imFormatICO::New(const char* file_name) +int imFileFormatICO::New(const char* file_name) { /* opens the binary file for writing with intel byte order */ handle = imBinFileNew(file_name); @@ -165,7 +175,7 @@ int imFormatICO::New(const char* file_name) return IM_ERR_NONE; } -void imFormatICO::Close() +void imFileFormatICO::Close() { if (this->is_new) { @@ -180,7 +190,7 @@ void imFormatICO::Close() imBinFileClose(handle); } -void* imFormatICO::Handle(int index) +void* imFileFormatICO::Handle(int index) { if (index == 0) return (void*)this->handle; @@ -188,7 +198,7 @@ void* imFormatICO::Handle(int index) return NULL; } -int imFormatICO::ReadImageInfo(int index) +int imFileFormatICO::ReadImageInfo(int index) { this->file_data_type = IM_BYTE; unsigned int dword_value; @@ -270,7 +280,7 @@ int imFormatICO::ReadImageInfo(int index) return IM_ERR_NONE; } -int imFormatICO::WriteImageInfo() +int imFileFormatICO::WriteImageInfo() { this->file_data_type = IM_BYTE; this->file_color_mode = imColorModeSpace(this->user_color_mode); @@ -368,7 +378,7 @@ int imFormatICO::WriteImageInfo() return IM_ERR_NONE; } -int imFormatICO::ReadPalette() +int imFileFormatICO::ReadPalette() { /* reads the color palette */ unsigned char bmp_colors[256 * 4]; @@ -389,7 +399,7 @@ int imFormatICO::ReadPalette() return IM_ERR_NONE; } -int imFormatICO::WritePalette() +int imFileFormatICO::WritePalette() { unsigned char bmp_colors[256 * 4]; @@ -410,7 +420,7 @@ int imFormatICO::WritePalette() return IM_ERR_NONE; } -void imFormatICO::FixRGBOrder() +void imFileFormatICO::FixRGBOrder() { if (this->bpp == 24) { @@ -455,7 +465,7 @@ static inline int PixelOffset(int is_top_down, int is_packed, int width, int hei return plane*width*height + row*width + col; } -int imFormatICO::ReadImageData(void* data) +int imFileFormatICO::ReadImageData(void* data) { imCounterTotal(this->counter, this->height, "Reading ICO..."); @@ -542,7 +552,7 @@ int imFormatICO::ReadImageData(void* data) return IM_ERR_NONE; } -int imFormatICO::WriteImageData(void* data) +int imFileFormatICO::WriteImageData(void* data) { imCounterTotal(this->counter, this->height, "Writing ICO..."); diff --git a/src/im_format_jp2.cpp b/src/im_format_jp2.cpp index 16e2c60..de25e88 100644 --- a/src/im_format_jp2.cpp +++ b/src/im_format_jp2.cpp @@ -3,7 +3,7 @@ * * See Copyright Notice in im_lib.h * See libJaper Copyright Notice in jasper.h - * $Id: im_format_jp2.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_format_jp2.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ #include "im_format.h" @@ -103,6 +103,26 @@ static const char* iJP2CompTable[1] = "JPEG-2000", }; +class imFileFormatJP2: public imFileFormatBase +{ + int fmtid; + jas_stream_t *stream; + jas_image_t *image; + +public: + imFileFormatJP2(const imFormat* _iformat): imFileFormatBase(_iformat), image(0) {} + ~imFileFormatJP2() {} + + int Open(const char* file_name); + int New(const char* file_name); + void Close(); + void* Handle(int index); + int ReadImageInfo(int index); + int ReadImageData(void* data); + int WriteImageInfo(); + int WriteImageData(void* data); +}; + class imFormatJP2: public imFormat { int fmtid; @@ -118,18 +138,10 @@ public: 1, 0) { - image = 0; } ~imFormatJP2() {} - int Open(const char* file_name); - int New(const char* file_name); - void Close(); - void* Handle(int index); - int ReadImageInfo(int index); - int ReadImageData(void* data); - int WriteImageInfo(); - int WriteImageData(void* data); + imFileFormatBase* Create(void) const { return new imFileFormatJP2(this); } int CanWrite(const char* compression, int color_mode, int data_type) const; }; @@ -166,7 +178,7 @@ void imFormatRegisterJP2(void) imFormatRegister(new imFormatJP2()); } -int imFormatJP2::Open(const char* file_name) +int imFileFormatJP2::Open(const char* file_name) { this->stream = jas_binfile_open(file_name, 0); if (this->stream == NULL) @@ -185,7 +197,7 @@ int imFormatJP2::Open(const char* file_name) return IM_ERR_NONE; } -int imFormatJP2::New(const char* file_name) +int imFileFormatJP2::New(const char* file_name) { this->stream = jas_binfile_open(file_name, 1); if (this->stream == NULL) @@ -197,7 +209,7 @@ int imFormatJP2::New(const char* file_name) return IM_ERR_NONE; } -void imFormatJP2::Close() +void imFileFormatJP2::Close() { if (this->image) jas_image_destroy(this->image); @@ -205,7 +217,7 @@ void imFormatJP2::Close() jas_stream_close(this->stream); } -void* imFormatJP2::Handle(int index) +void* imFileFormatJP2::Handle(int index) { if (index == 0) return (void*)this->stream->obj_; @@ -217,7 +229,7 @@ void* imFormatJP2::Handle(int index) return NULL; } -int imFormatJP2::ReadImageInfo(int index) +int imFileFormatJP2::ReadImageInfo(int index) { (void)index; @@ -290,7 +302,7 @@ int imFormatJP2::ReadImageInfo(int index) return IM_ERR_NONE; } -int imFormatJP2::WriteImageInfo() +int imFileFormatJP2::WriteImageInfo() { this->file_data_type = this->user_data_type; this->file_color_mode = imColorModeSpace(this->user_color_mode); @@ -377,7 +389,7 @@ int imFormatJP2::WriteImageInfo() return IM_ERR_NONE; } -int imFormatJP2::ReadImageData(void* data) +int imFileFormatJP2::ReadImageData(void* data) { int count = imFileLineBufferCount(this); @@ -419,7 +431,7 @@ int imFormatJP2::ReadImageData(void* data) return IM_ERR_NONE; } -int imFormatJP2::WriteImageData(void* data) +int imFileFormatJP2::WriteImageData(void* data) { int count = imFileLineBufferCount(this); imCounterTotal(this->counter, count, "Writing JP2..."); /* first time count */ diff --git a/src/im_format_jpeg.cpp b/src/im_format_jpeg.cpp index 91d0ae9..487db0b 100644 --- a/src/im_format_jpeg.cpp +++ b/src/im_format_jpeg.cpp @@ -3,7 +3,7 @@ * * See Copyright Notice in im_lib.h * See libJPEG Copyright Notice in jpeglib.h - * $Id: im_format_jpeg.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_format_jpeg.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ #include "im_format.h" @@ -69,7 +69,7 @@ static const char* iJPEGCompTable[1] = "JPEG" }; -class imFormatJPEG: public imFormat +class imFileFormatJPEG: public imFileFormatBase { jpeg_decompress_struct dinfo; jpeg_compress_struct cinfo; @@ -84,6 +84,22 @@ class imFormatJPEG: public imFormat #endif public: + imFileFormatJPEG(const imFormat* _iformat): imFileFormatBase(_iformat) {} + ~imFileFormatJPEG() {} + + int Open(const char* file_name); + int New(const char* file_name); + void Close(); + void* Handle(int index); + int ReadImageInfo(int index); + int ReadImageData(void* data); + int WriteImageInfo(); + int WriteImageData(void* data); +}; + +class imFormatJPEG: public imFormat +{ +public: imFormatJPEG() :imFormat("JPEG", "JPEG File Interchange Format", @@ -94,14 +110,7 @@ public: {} ~imFormatJPEG() {} - int Open(const char* file_name); - int New(const char* file_name); - void Close(); - void* Handle(int index); - int ReadImageInfo(int index); - int ReadImageData(void* data); - int WriteImageInfo(); - int WriteImageData(void* data); + imFileFormatBase* Create(void) const { return new imFileFormatJPEG(this); } int CanWrite(const char* compression, int color_mode, int data_type) const; }; @@ -110,7 +119,7 @@ void imFormatRegisterJPEG(void) imFormatRegister(new imFormatJPEG()); } -int imFormatJPEG::Open(const char* file_name) +int imFileFormatJPEG::Open(const char* file_name) { this->handle = imBinFileOpen(file_name); if (this->handle == NULL) @@ -158,7 +167,7 @@ int imFormatJPEG::Open(const char* file_name) return IM_ERR_NONE; } -int imFormatJPEG::New(const char* file_name) +int imFileFormatJPEG::New(const char* file_name) { this->handle = imBinFileNew(file_name); if (this->handle == NULL) @@ -190,7 +199,7 @@ int imFormatJPEG::New(const char* file_name) return IM_ERR_NONE; } -void imFormatJPEG::Close() +void imFileFormatJPEG::Close() { if (this->is_new) jpeg_destroy_compress(&this->cinfo); @@ -200,7 +209,7 @@ void imFormatJPEG::Close() imBinFileClose(this->handle); } -void* imFormatJPEG::Handle(int index) +void* imFileFormatJPEG::Handle(int index) { if (index == 0) return this->handle; @@ -216,7 +225,7 @@ void* imFormatJPEG::Handle(int index) } #ifdef USE_EXIF -void imFormatJPEG::iReadExifAttrib(unsigned char* data, int data_length, imAttribTable* attrib_table) +void imFileFormatJPEG::iReadExifAttrib(unsigned char* data, int data_length, imAttribTable* attrib_table) { ExifData* exif = exif_data_new_from_data(data, data_length); if (!exif) @@ -377,7 +386,7 @@ static void iGetRational(float fvalue, int *num, int *den, int sign) *num = sign * imRound(fvalue); } -void imFormatJPEG::iWriteExifAttrib(imAttribTable* attrib_table) +void imFileFormatJPEG::iWriteExifAttrib(imAttribTable* attrib_table) { ExifData* exif = exif_data_new(); @@ -525,7 +534,7 @@ void imFormatJPEG::iWriteExifAttrib(imAttribTable* attrib_table) } #endif -int imFormatJPEG::ReadImageInfo(int index) +int imFileFormatJPEG::ReadImageInfo(int index) { (void)index; this->fix_adobe = 0; @@ -635,7 +644,7 @@ int imFormatJPEG::ReadImageInfo(int index) return IM_ERR_NONE; } -int imFormatJPEG::WriteImageInfo() +int imFileFormatJPEG::WriteImageInfo() { this->file_color_mode = imColorModeSpace(this->user_color_mode); this->file_color_mode |= IM_TOPDOWN; @@ -737,7 +746,7 @@ static void iFixAdobe(unsigned char* line_buffer, int width) } } -int imFormatJPEG::ReadImageData(void* data) +int imFileFormatJPEG::ReadImageData(void* data) { if (setjmp(this->jerr.setjmp_buffer)) return IM_ERR_ACCESS; @@ -769,7 +778,7 @@ int imFormatJPEG::ReadImageData(void* data) return IM_ERR_NONE; } -int imFormatJPEG::WriteImageData(void* data) +int imFileFormatJPEG::WriteImageData(void* data) { if (setjmp(this->jerr.setjmp_buffer)) return IM_ERR_ACCESS; diff --git a/src/im_format_krn.cpp b/src/im_format_krn.cpp index 41c9be7..21261a8 100644 --- a/src/im_format_krn.cpp +++ b/src/im_format_krn.cpp @@ -2,7 +2,7 @@ * \brief KRN - IM Kernel File Format * * See Copyright Notice in im_lib.h - * $Id: im_format_krn.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_format_krn.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ #include "im_format.h" @@ -124,11 +124,27 @@ static const char* iKRNCompTable[1] = "NONE" }; -class imFormatKRN: public imFormat +class imFileFormatKRN: public imFileFormatBase { imBinFile* handle; /* the binary file handle */ public: + imFileFormatKRN(const imFormat* _iformat): imFileFormatBase(_iformat) {} + ~imFileFormatKRN() {} + + int Open(const char* file_name); + int New(const char* file_name); + void Close(); + void* Handle(int index); + int ReadImageInfo(int index); + int ReadImageData(void* data); + int WriteImageInfo(); + int WriteImageData(void* data); +}; + +class imFormatKRN: public imFormat +{ +public: imFormatKRN() :imFormat("KRN", "IM Kernel File Format", @@ -139,14 +155,7 @@ public: {} ~imFormatKRN() {} - int Open(const char* file_name); - int New(const char* file_name); - void Close(); - void* Handle(int index); - int ReadImageInfo(int index); - int ReadImageData(void* data); - int WriteImageInfo(); - int WriteImageData(void* data); + imFileFormatBase* Create(void) const { return new imFileFormatKRN(this); } int CanWrite(const char* compression, int color_mode, int data_type) const; }; @@ -155,7 +164,7 @@ void imFormatRegisterKRN(void) imFormatRegister(new imFormatKRN()); } -int imFormatKRN::Open(const char* file_name) +int imFileFormatKRN::Open(const char* file_name) { char sig[9]; @@ -186,7 +195,7 @@ int imFormatKRN::Open(const char* file_name) return IM_ERR_NONE; } -int imFormatKRN::New(const char* file_name) +int imFileFormatKRN::New(const char* file_name) { /* opens the binary file for writing */ handle = imBinFileNew(file_name); @@ -203,12 +212,12 @@ int imFormatKRN::New(const char* file_name) return IM_ERR_NONE; } -void imFormatKRN::Close() +void imFileFormatKRN::Close() { imBinFileClose(handle); } -void* imFormatKRN::Handle(int index) +void* imFileFormatKRN::Handle(int index) { if (index == 0) return (void*)this->handle; @@ -216,7 +225,7 @@ void* imFormatKRN::Handle(int index) return NULL; } -int imFormatKRN::ReadImageInfo(int index) +int imFileFormatKRN::ReadImageInfo(int index) { (void)index; this->file_color_mode = IM_GRAY|IM_TOPDOWN; @@ -248,7 +257,7 @@ int imFormatKRN::ReadImageInfo(int index) return IM_ERR_NONE; } -int imFormatKRN::WriteImageInfo() +int imFileFormatKRN::WriteImageInfo() { this->file_data_type = this->user_data_type; this->file_color_mode = IM_GRAY|IM_TOPDOWN; @@ -283,7 +292,7 @@ int imFormatKRN::WriteImageInfo() return IM_ERR_NONE; } -int imFormatKRN::ReadImageData(void* data) +int imFileFormatKRN::ReadImageData(void* data) { imCounterTotal(this->counter, this->height, "Reading KRN..."); @@ -318,7 +327,7 @@ int imFormatKRN::ReadImageData(void* data) return IM_ERR_NONE; } -int imFormatKRN::WriteImageData(void* data) +int imFileFormatKRN::WriteImageData(void* data) { imCounterTotal(this->counter, this->height, "Writing KRN..."); diff --git a/src/im_format_led.cpp b/src/im_format_led.cpp index d67ee8c..eb7173c 100644 --- a/src/im_format_led.cpp +++ b/src/im_format_led.cpp @@ -2,7 +2,7 @@ * \brief LED - IUP image in LED * * See Copyright Notice in im_lib.h - * $Id: im_format_led.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_format_led.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ #include "im_format.h" @@ -81,7 +81,7 @@ static const char* iLEDCompTable[1] = "NONE" }; -class imFormatLED: public imFormat +class imFileFormatLED: public imFileFormatBase { imBinFile* handle; /* the binary file handle */ int pal_count; @@ -90,6 +90,22 @@ class imFormatLED: public imFormat int WritePalette(); public: + imFileFormatLED(const imFormat* _iformat): imFileFormatBase(_iformat) {} + ~imFileFormatLED() {} + + int Open(const char* file_name); + int New(const char* file_name); + void Close(); + void* Handle(int index); + int ReadImageInfo(int index); + int ReadImageData(void* data); + int WriteImageInfo(); + int WriteImageData(void* data); +}; + +class imFormatLED: public imFormat +{ +public: imFormatLED() :imFormat("LED", "IUP image in LED special format", @@ -100,23 +116,17 @@ public: {} ~imFormatLED() {} - int Open(const char* file_name); - int New(const char* file_name); - void Close(); - void* Handle(int index); - int ReadImageInfo(int index); - int ReadImageData(void* data); - int WriteImageInfo(); - int WriteImageData(void* data); + imFileFormatBase* Create(void) const { return new imFileFormatLED(this); } int CanWrite(const char* compression, int color_mode, int data_type) const; }; + void imFormatRegisterLED(void) { imFormatRegister(new imFormatLED()); } -int imFormatLED::Open(const char* file_name) +int imFileFormatLED::Open(const char* file_name) { char sig[4]; unsigned char byte_value; @@ -171,7 +181,7 @@ int imFormatLED::Open(const char* file_name) return IM_ERR_NONE; } -int imFormatLED::New(const char* file_name) +int imFileFormatLED::New(const char* file_name) { /* opens the binary file for writing */ handle = imBinFileNew(file_name); @@ -190,12 +200,12 @@ int imFormatLED::New(const char* file_name) return IM_ERR_NONE; } -void imFormatLED::Close() +void imFileFormatLED::Close() { imBinFileClose(handle); } -void* imFormatLED::Handle(int index) +void* imFileFormatLED::Handle(int index) { if (index == 0) return (void*)this->handle; @@ -203,7 +213,7 @@ void* imFormatLED::Handle(int index) return NULL; } -int imFormatLED::ReadImageInfo(int index) +int imFileFormatLED::ReadImageInfo(int index) { (void)index; @@ -225,7 +235,7 @@ int imFormatLED::ReadImageInfo(int index) return IM_ERR_NONE; } -int imFormatLED::WriteImageInfo() +int imFileFormatLED::WriteImageInfo() { this->file_data_type = IM_BYTE; this->file_color_mode = imColorModeSpace(this->user_color_mode); @@ -239,7 +249,7 @@ int imFormatLED::WriteImageInfo() return IM_ERR_NONE; } -int imFormatLED::ReadPalette() +int imFileFormatLED::ReadPalette() { int c, r, g, b, i; @@ -260,7 +270,7 @@ int imFormatLED::ReadPalette() return IM_ERR_NONE; } -int imFormatLED::WritePalette() +int imFileFormatLED::WritePalette() { int c; unsigned char r, g, b; @@ -285,7 +295,7 @@ int imFormatLED::WritePalette() return IM_ERR_NONE; } -int imFormatLED::ReadImageData(void* data) +int imFileFormatLED::ReadImageData(void* data) { int value; @@ -310,7 +320,7 @@ int imFormatLED::ReadImageData(void* data) return IM_ERR_NONE; } -int imFormatLED::WriteImageData(void* data) +int imFileFormatLED::WriteImageData(void* data) { imCounterTotal(this->counter, this->height, "Writing LED..."); diff --git a/src/im_format_pcx.cpp b/src/im_format_pcx.cpp index 32487bc..fd206ae 100644 --- a/src/im_format_pcx.cpp +++ b/src/im_format_pcx.cpp @@ -2,7 +2,7 @@ * \brief PCX - ZSoft Picture * * See Copyright Notice in im_lib.h - * $Id: im_format_pcx.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_format_pcx.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ #include "im_format.h" @@ -145,7 +145,7 @@ static const char* iPCXCompTable[2] = "RLE" }; -class imFormatPCX: public imFormat +class imFileFormatPCX: public imFileFormatBase { imBinFile* handle; /* the binary file handle */ int bpp; /* number of bits per pixel */ @@ -160,6 +160,22 @@ class imFormatPCX: public imFormat void Unpack24bpp(); public: + imFileFormatPCX(const imFormat* _iformat): imFileFormatBase(_iformat) {} + ~imFileFormatPCX() {} + + int Open(const char* file_name); + int New(const char* file_name); + void Close(); + void* Handle(int index); + int ReadImageInfo(int index); + int ReadImageData(void* data); + int WriteImageInfo(); + int WriteImageData(void* data); +}; + +class imFormatPCX: public imFormat +{ +public: imFormatPCX() :imFormat("PCX", "ZSoft Picture", @@ -170,23 +186,17 @@ public: {} ~imFormatPCX() {} - int Open(const char* file_name); - int New(const char* file_name); - void Close(); - void* Handle(int index); - int ReadImageInfo(int index); - int ReadImageData(void* data); - int WriteImageInfo(); - int WriteImageData(void* data); + imFileFormatBase* Create(void) const { return new imFileFormatPCX(this); } int CanWrite(const char* compression, int color_mode, int data_type) const; }; + void imFormatRegisterPCX(void) { imFormatRegister(new imFormatPCX()); } -int imFormatPCX::Open(const char* file_name) +int imFileFormatPCX::Open(const char* file_name) { unsigned char id; @@ -226,7 +236,7 @@ int imFormatPCX::Open(const char* file_name) return IM_ERR_NONE; } -int imFormatPCX::New(const char* file_name) +int imFileFormatPCX::New(const char* file_name) { /* opens the binary file for writing with intel byte order */ handle = imBinFileNew(file_name); @@ -238,12 +248,12 @@ int imFormatPCX::New(const char* file_name) return IM_ERR_NONE; } -void imFormatPCX::Close() +void imFileFormatPCX::Close() { imBinFileClose(handle); } -void* imFormatPCX::Handle(int index) +void* imFileFormatPCX::Handle(int index) { if (index == 0) return (void*)this->handle; @@ -251,7 +261,7 @@ void* imFormatPCX::Handle(int index) return NULL; } -int imFormatPCX::ReadImageInfo(int index) +int imFileFormatPCX::ReadImageInfo(int index) { unsigned char bppp, planes; unsigned short xmin, xmax, ymax, ymin, word, bplp; @@ -339,7 +349,7 @@ int imFormatPCX::ReadImageInfo(int index) return IM_ERR_NONE; } -int imFormatPCX::WriteImageInfo() +int imFileFormatPCX::WriteImageInfo() { unsigned short word_value, bplp; unsigned char byte_value, filler[54+3*2]; @@ -447,7 +457,7 @@ int imFormatPCX::WriteImageInfo() return IM_ERR_NONE; } -int imFormatPCX::ReadPalette() +int imFileFormatPCX::ReadPalette() { unsigned char pcx_colors[256 * 3]; @@ -498,7 +508,7 @@ int imFormatPCX::ReadPalette() return IM_ERR_NONE; } -int imFormatPCX::WritePalette() +int imFileFormatPCX::WritePalette() { unsigned char ExtPal = (unsigned char)12; unsigned char pcx_colors[256 * 3]; @@ -522,7 +532,7 @@ int imFormatPCX::WritePalette() return IM_ERR_NONE; } -void imFormatPCX::Expand4bpp() +void imFileFormatPCX::Expand4bpp() { int num_bits = 8, WidthDiv8 = (this->width + 7) / 8; @@ -559,7 +569,7 @@ void imFormatPCX::Expand4bpp() memcpy(this->line_buffer, in_data + this->line_buffer_size+2, this->width); } -void imFormatPCX::Pack24bpp() +void imFileFormatPCX::Pack24bpp() { imbyte *in_data = (unsigned char*)this->line_buffer; imbyte *out_data = in_data + this->line_buffer_size+2; @@ -580,7 +590,7 @@ void imFormatPCX::Pack24bpp() memcpy(in_data, in_data + this->line_buffer_size+2, this->line_raw_size); } -void imFormatPCX::Unpack24bpp() +void imFileFormatPCX::Unpack24bpp() { imbyte *in_data = (unsigned char*)this->line_buffer; imbyte *out_data = in_data + this->line_buffer_size+2; @@ -601,7 +611,7 @@ void imFormatPCX::Unpack24bpp() memcpy(out_data - (this->line_buffer_size+2), out_data, this->line_raw_size); } -int imFormatPCX::ReadImageData(void* data) +int imFileFormatPCX::ReadImageData(void* data) { imCounterTotal(this->counter, this->height, "Reading PCX..."); @@ -637,7 +647,7 @@ int imFormatPCX::ReadImageData(void* data) return IM_ERR_NONE; } -int imFormatPCX::WriteImageData(void* data) +int imFileFormatPCX::WriteImageData(void* data) { imCounterTotal(this->counter, this->height, "Writing PCX..."); diff --git a/src/im_format_png.cpp b/src/im_format_png.cpp index 1e7f8ba..314f07f 100644 --- a/src/im_format_png.cpp +++ b/src/im_format_png.cpp @@ -3,7 +3,7 @@ * * See Copyright Notice in im_lib.h * See libPNG Copyright Notice in png.h - * $Id: im_format_png.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_format_png.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ #include "im_format.h" @@ -42,7 +42,7 @@ static const char* iPNGCompTable[1] = "DEFLATE" }; -class imFormatPNG: public imFormat +class imFileFormatPNG: public imFileFormatBase { png_structp png_ptr; png_infop info_ptr; @@ -54,6 +54,22 @@ class imFormatPNG: public imFormat void iWriteAttrib(imAttribTable* attrib_table); public: + imFileFormatPNG(const imFormat* _iformat): imFileFormatBase(_iformat) {} + ~imFileFormatPNG() {} + + int Open(const char* file_name); + int New(const char* file_name); + void Close(); + void* Handle(int index); + int ReadImageInfo(int index); + int ReadImageData(void* data); + int WriteImageInfo(); + int WriteImageData(void* data); +}; + +class imFormatPNG: public imFormat +{ +public: imFormatPNG() :imFormat("PNG", "Portable Network Graphic Format", @@ -64,14 +80,7 @@ public: {} ~imFormatPNG() {} - int Open(const char* file_name); - int New(const char* file_name); - void Close(); - void* Handle(int index); - int ReadImageInfo(int index); - int ReadImageData(void* data); - int WriteImageInfo(); - int WriteImageData(void* data); + imFileFormatBase* Create(void) const { return new imFileFormatPNG(this); } int CanWrite(const char* compression, int color_mode, int data_type) const; }; @@ -80,7 +89,7 @@ void imFormatRegisterPNG(void) imFormatRegister(new imFormatPNG()); } -int imFormatPNG::Open(const char* file_name) +int imFileFormatPNG::Open(const char* file_name) { this->handle = imBinFileOpen(file_name); if (this->handle == NULL) @@ -115,7 +124,7 @@ int imFormatPNG::Open(const char* file_name) return IM_ERR_NONE; } -int imFormatPNG::New(const char* file_name) +int imFileFormatPNG::New(const char* file_name) { this->handle = imBinFileNew(file_name); if (this->handle == NULL) @@ -134,7 +143,7 @@ int imFormatPNG::New(const char* file_name) return IM_ERR_NONE; } -void imFormatPNG::Close() +void imFileFormatPNG::Close() { if (this->is_new) png_destroy_write_struct(&this->png_ptr, &this->info_ptr); @@ -144,7 +153,7 @@ void imFormatPNG::Close() imBinFileClose(this->handle); } -void* imFormatPNG::Handle(int index) +void* imFileFormatPNG::Handle(int index) { if (index == 0) return (void*)this->handle; @@ -154,7 +163,7 @@ void* imFormatPNG::Handle(int index) return 0; } -void imFormatPNG::iReadAttrib(imAttribTable* attrib_table) +void imFileFormatPNG::iReadAttrib(imAttribTable* attrib_table) { double gamma; if (png_get_gAMA(png_ptr, info_ptr, &gamma)) @@ -377,7 +386,7 @@ static int iFindAttribString(void* user_data, int index, const char* name, int d return 1; } -void imFormatPNG::iWriteAttrib(imAttribTable* attrib_table) +void imFileFormatPNG::iWriteAttrib(imAttribTable* attrib_table) { const void* attrib_data = attrib_table->Get("Gamma"); if (attrib_data) @@ -563,7 +572,7 @@ void imFormatPNG::iWriteAttrib(imAttribTable* attrib_table) } } -int imFormatPNG::ReadImageInfo(int index) +int imFileFormatPNG::ReadImageInfo(int index) { (void)index; @@ -678,7 +687,7 @@ int imFormatPNG::ReadImageInfo(int index) return IM_ERR_NONE; } -int imFormatPNG::WriteImageInfo() +int imFileFormatPNG::WriteImageInfo() { this->file_color_mode = imColorModeSpace(this->user_color_mode); this->file_color_mode |= IM_TOPDOWN; @@ -805,7 +814,7 @@ static int iInterlaceRowCheck(int row_step, int pass) return 0; } -int imFormatPNG::ReadImageData(void* data) +int imFileFormatPNG::ReadImageData(void* data) { if (setjmp(this->png_ptr->jmpbuf)) return IM_ERR_ACCESS; @@ -856,7 +865,7 @@ int imFormatPNG::ReadImageData(void* data) return IM_ERR_NONE; } -int imFormatPNG::WriteImageData(void* data) +int imFileFormatPNG::WriteImageData(void* data) { if (setjmp(this->png_ptr->jmpbuf)) return IM_ERR_ACCESS; diff --git a/src/im_format_pnm.cpp b/src/im_format_pnm.cpp index 1c7832a..bd034ad 100644 --- a/src/im_format_pnm.cpp +++ b/src/im_format_pnm.cpp @@ -2,7 +2,7 @@ * \brief PNM - Netpbm Portable Image Map * * See Copyright Notice in im_lib.h - * $Id: im_format_pnm.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_format_pnm.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ #include "im_format.h" @@ -98,7 +98,7 @@ static const char* iPNMCompTable[2] = "ASCII" }; -class imFormatPNM: public imFormat +class imFileFormatPNM: public imFileFormatBase { imBinFile* handle; /* the binary file handle */ unsigned char image_type; @@ -106,6 +106,22 @@ class imFormatPNM: public imFormat void FixBinary(); public: + imFileFormatPNM(const imFormat* _iformat): imFileFormatBase(_iformat) {} + ~imFileFormatPNM() {} + + int Open(const char* file_name); + int New(const char* file_name); + void Close(); + void* Handle(int index); + int ReadImageInfo(int index); + int ReadImageData(void* data); + int WriteImageInfo(); + int WriteImageData(void* data); +}; + +class imFormatPNM: public imFormat +{ +public: imFormatPNM() :imFormat("PNM", "Netpbm Portable Image Map", @@ -116,23 +132,17 @@ public: {} ~imFormatPNM() {} - int Open(const char* file_name); - int New(const char* file_name); - void Close(); - void* Handle(int index); - int ReadImageInfo(int index); - int ReadImageData(void* data); - int WriteImageInfo(); - int WriteImageData(void* data); + imFileFormatBase* Create(void) const { return new imFileFormatPNM(this); } int CanWrite(const char* compression, int color_mode, int data_type) const; }; + void imFormatRegisterPNM(void) { imFormatRegister(new imFormatPNM()); } -int imFormatPNM::Open(const char* file_name) +int imFileFormatPNM::Open(const char* file_name) { unsigned char sig[2]; @@ -168,7 +178,7 @@ int imFormatPNM::Open(const char* file_name) return IM_ERR_NONE; } -int imFormatPNM::New(const char* file_name) +int imFileFormatPNM::New(const char* file_name) { /* opens the binary file for writing */ handle = imBinFileNew(file_name); @@ -180,12 +190,12 @@ int imFormatPNM::New(const char* file_name) return IM_ERR_NONE; } -void imFormatPNM::Close() +void imFileFormatPNM::Close() { imBinFileClose(handle); } -void* imFormatPNM::Handle(int index) +void* imFileFormatPNM::Handle(int index) { if (index == 0) return (void*)this->handle; @@ -193,7 +203,7 @@ void* imFormatPNM::Handle(int index) return NULL; } -int imFormatPNM::ReadImageInfo(int index) +int imFileFormatPNM::ReadImageInfo(int index) { (void)index; @@ -249,7 +259,7 @@ int imFormatPNM::ReadImageInfo(int index) return IM_ERR_NONE; } -int imFormatPNM::WriteImageInfo() +int imFileFormatPNM::WriteImageInfo() { this->file_data_type = this->user_data_type; this->file_color_mode = imColorModeSpace(this->user_color_mode); @@ -328,7 +338,7 @@ int imFormatPNM::WriteImageInfo() return IM_ERR_NONE; } -void imFormatPNM::FixBinary() +void imFileFormatPNM::FixBinary() { unsigned char* buf = (unsigned char*)this->line_buffer; for (int b = 0; b < this->line_buffer_size; b++) @@ -338,7 +348,7 @@ void imFormatPNM::FixBinary() } } -int imFormatPNM::ReadImageData(void* data) +int imFileFormatPNM::ReadImageData(void* data) { imCounterTotal(this->counter, this->height, "Reading PNM..."); @@ -414,7 +424,7 @@ int imFormatPNM::ReadImageData(void* data) return IM_ERR_NONE; } -int imFormatPNM::WriteImageData(void* data) +int imFileFormatPNM::WriteImageData(void* data) { imCounterTotal(this->counter, this->height, "Writing PNM..."); diff --git a/src/im_format_ras.cpp b/src/im_format_ras.cpp index bab074a..1960c49 100644 --- a/src/im_format_ras.cpp +++ b/src/im_format_ras.cpp @@ -2,7 +2,7 @@ * \brief RAS - Sun Raster File * * See Copyright Notice in im_lib.h - * $Id: im_format_ras.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_format_ras.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ #include "im_format.h" @@ -153,7 +153,7 @@ static const char* iRASCompTable[2] = "RLE" }; -class imFormatRAS: public imFormat +class imFileFormatRAS: public imFileFormatBase { imBinFile* handle; /* the binary file handle */ unsigned int bpp, /* number of bits per pixel */ @@ -166,6 +166,22 @@ class imFormatRAS: public imFormat void FixRGB(); public: + imFileFormatRAS(const imFormat* _iformat): imFileFormatBase(_iformat) {} + ~imFileFormatRAS() {} + + int Open(const char* file_name); + int New(const char* file_name); + void Close(); + void* Handle(int index); + int ReadImageInfo(int index); + int ReadImageData(void* data); + int WriteImageInfo(); + int WriteImageData(void* data); +}; + +class imFormatRAS: public imFormat +{ +public: imFormatRAS() :imFormat("RAS", "Sun Raster File", @@ -176,23 +192,17 @@ public: {} ~imFormatRAS() {} - int Open(const char* file_name); - int New(const char* file_name); - void Close(); - void* Handle(int index); - int ReadImageInfo(int index); - int ReadImageData(void* data); - int WriteImageInfo(); - int WriteImageData(void* data); + imFileFormatBase* Create(void) const { return new imFileFormatRAS(this); } int CanWrite(const char* compression, int color_mode, int data_type) const; }; + void imFormatRegisterRAS(void) { imFormatRegister(new imFormatRAS()); } -int imFormatRAS::Open(const char* file_name) +int imFileFormatRAS::Open(const char* file_name) { unsigned int dword_value; @@ -238,7 +248,7 @@ int imFormatRAS::Open(const char* file_name) return IM_ERR_NONE; } -int imFormatRAS::New(const char* file_name) +int imFileFormatRAS::New(const char* file_name) { /* opens the binary file for writing with motorola byte order */ handle = imBinFileNew(file_name); @@ -252,12 +262,12 @@ int imFormatRAS::New(const char* file_name) return IM_ERR_NONE; } -void imFormatRAS::Close() +void imFileFormatRAS::Close() { imBinFileClose(handle); } -void* imFormatRAS::Handle(int index) +void* imFileFormatRAS::Handle(int index) { if (index == 0) return (void*)this->handle; @@ -265,7 +275,7 @@ void* imFormatRAS::Handle(int index) return NULL; } -int imFormatRAS::ReadImageInfo(int index) +int imFileFormatRAS::ReadImageInfo(int index) { (void)index; unsigned int dword_value; @@ -347,7 +357,7 @@ int imFormatRAS::ReadImageInfo(int index) return IM_ERR_NONE; } -int imFormatRAS::WriteImageInfo() +int imFileFormatRAS::WriteImageInfo() { this->file_data_type = IM_BYTE; this->file_color_mode = imColorModeSpace(this->user_color_mode); @@ -420,7 +430,7 @@ int imFormatRAS::WriteImageInfo() return IM_ERR_NONE; } -int imFormatRAS::ReadPalette() +int imFileFormatRAS::ReadPalette() { unsigned char ras_colors[256 * 3]; @@ -451,7 +461,7 @@ int imFormatRAS::ReadPalette() return IM_ERR_NONE; } -int imFormatRAS::WritePalette() +int imFileFormatRAS::WritePalette() { int c; unsigned char ras_colors[256 * 3]; @@ -471,7 +481,7 @@ int imFormatRAS::WritePalette() return IM_ERR_NONE; } -void imFormatRAS::FixRGB() +void imFileFormatRAS::FixRGB() { int x; imbyte* byte_data = (imbyte*)this->line_buffer; @@ -509,7 +519,7 @@ void imFormatRAS::FixRGB() } } -int imFormatRAS::ReadImageData(void* data) +int imFileFormatRAS::ReadImageData(void* data) { imCounterTotal(this->counter, this->height, "Reading RAS..."); @@ -541,7 +551,7 @@ int imFormatRAS::ReadImageData(void* data) return IM_ERR_NONE; } -int imFormatRAS::WriteImageData(void* data) +int imFileFormatRAS::WriteImageData(void* data) { imCounterTotal(this->counter, this->height, "Writing RAS..."); diff --git a/src/im_format_raw.cpp b/src/im_format_raw.cpp index 83ffadb..a7b7934 100644 --- a/src/im_format_raw.cpp +++ b/src/im_format_raw.cpp @@ -2,7 +2,7 @@ * \brief RAW File Format * * See Copyright Notice in im_lib.h - * $Id: im_format_raw.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_format_raw.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ #include "im_format.h" @@ -20,7 +20,7 @@ static const char* iRAWCompTable[1] = "NONE" }; -class imFormatRAW: public imFormat +class imFileFormatRAW: public imFileFormatBase { imBinFile* handle; int padding; @@ -28,6 +28,22 @@ class imFormatRAW: public imFormat int iRawUpdateParam(int index); public: + imFileFormatRAW(const imFormat* _iformat): imFileFormatBase(_iformat) {} + ~imFileFormatRAW() {} + + int Open(const char* file_name); + int New(const char* file_name); + void Close(); + void* Handle(int index); + int ReadImageInfo(int index); + int ReadImageData(void* data); + int WriteImageInfo(); + int WriteImageData(void* data); +}; + +class imFormatRAW: public imFormat +{ +public: imFormatRAW() :imFormat("RAW", "RAW File Format", @@ -38,23 +54,18 @@ public: {} ~imFormatRAW() {} - int Open(const char* file_name); - int New(const char* file_name); - void Close(); - void* Handle(int index); - int ReadImageInfo(int index); - int ReadImageData(void* data); - int WriteImageInfo(); - int WriteImageData(void* data); + imFileFormatBase* Create(void) const { return new imFileFormatRAW(this); } int CanWrite(const char* compression, int color_mode, int data_type) const; }; -imFormat* imFormatInitRAW(void) + +imFileFormatBase* imFormatInitRAW(void) { - return new imFormatRAW(); + imFormatRAW iformat; + return iformat.Create(); } -int imFormatRAW::Open(const char* file_name) +int imFileFormatRAW::Open(const char* file_name) { this->handle = imBinFileOpen(file_name); if (this->handle == NULL) @@ -68,7 +79,7 @@ int imFormatRAW::Open(const char* file_name) return IM_ERR_NONE; } -int imFormatRAW::New(const char* file_name) +int imFileFormatRAW::New(const char* file_name) { this->handle = imBinFileNew(file_name); if (this->handle == NULL) @@ -79,12 +90,12 @@ int imFormatRAW::New(const char* file_name) return IM_ERR_NONE; } -void imFormatRAW::Close() +void imFileFormatRAW::Close() { imBinFileClose(this->handle); } -void* imFormatRAW::Handle(int index) +void* imFileFormatRAW::Handle(int index) { if (index == 0) return (void*)this->handle; @@ -106,7 +117,7 @@ static int iCalcPad(int padding, int line_size) } } -int imFormatRAW::iRawUpdateParam(int index) +int imFileFormatRAW::iRawUpdateParam(int index) { (void)index; @@ -156,12 +167,12 @@ int imFormatRAW::iRawUpdateParam(int index) return IM_ERR_NONE; } -int imFormatRAW::ReadImageInfo(int index) +int imFileFormatRAW::ReadImageInfo(int index) { return iRawUpdateParam(index); } -int imFormatRAW::WriteImageInfo() +int imFileFormatRAW::WriteImageInfo() { this->file_color_mode = this->user_color_mode; this->file_data_type = this->user_data_type; @@ -177,7 +188,7 @@ static int iFileDataTypeSize(int file_data_type, int switch_type) return type_size; } -int imFormatRAW::ReadImageData(void* data) +int imFileFormatRAW::ReadImageData(void* data) { int count = imFileLineBufferCount(this); int line_count = imImageLineCount(this->width, this->file_color_mode); @@ -214,7 +225,7 @@ int imFormatRAW::ReadImageData(void* data) return IM_ERR_NONE; } -int imFormatRAW::WriteImageData(void* data) +int imFileFormatRAW::WriteImageData(void* data) { int count = imFileLineBufferCount(this); int line_count = imImageLineCount(this->width, this->file_color_mode); @@ -267,4 +278,3 @@ int imFormatRAW::CanWrite(const char* compression, int color_mode, int data_type return IM_ERR_NONE; } - diff --git a/src/im_format_sgi.cpp b/src/im_format_sgi.cpp index 1b0ac0a..08bbf4d 100644 --- a/src/im_format_sgi.cpp +++ b/src/im_format_sgi.cpp @@ -2,7 +2,7 @@ * \brief SGI - Silicon Graphics Image File Format * * See Copyright Notice in im_lib.h - * $Id: im_format_sgi.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_format_sgi.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ #include "im_format.h" @@ -133,15 +133,31 @@ static const char* iSGICompTable[2] = "RLE" }; -class imFormatSGI: public imFormat +class imFileFormatSGI: public imFileFormatBase { imBinFile* handle; /* the binary file handle */ unsigned char comp_type, /* sgi compression information */ bpc; /* bytes per channels */ - unsigned int *starttab, /* compression control buffer */ - *lengthtab; /* compression control buffer */ + unsigned int *starttab, /* compression control buffer */ + *lengthtab; /* compression control buffer */ public: + imFileFormatSGI(const imFormat* _iformat): imFileFormatBase(_iformat) {} + ~imFileFormatSGI() {} + + int Open(const char* file_name); + int New(const char* file_name); + void Close(); + void* Handle(int index); + int ReadImageInfo(int index); + int ReadImageData(void* data); + int WriteImageInfo(); + int WriteImageData(void* data); +}; + +class imFormatSGI: public imFormat +{ +public: imFormatSGI() :imFormat("SGI", "Silicon Graphics Image File Format", @@ -152,14 +168,7 @@ public: {} ~imFormatSGI() {} - int Open(const char* file_name); - int New(const char* file_name); - void Close(); - void* Handle(int index); - int ReadImageInfo(int index); - int ReadImageData(void* data); - int WriteImageInfo(); - int WriteImageData(void* data); + imFileFormatBase* Create(void) const { return new imFileFormatSGI(this); } int CanWrite(const char* compression, int color_mode, int data_type) const; }; @@ -168,7 +177,7 @@ void imFormatRegisterSGI(void) imFormatRegister(new imFormatSGI()); } -int imFormatSGI::Open(const char* file_name) +int imFileFormatSGI::Open(const char* file_name) { unsigned short word_value; @@ -213,7 +222,7 @@ int imFormatSGI::Open(const char* file_name) return IM_ERR_NONE; } -int imFormatSGI::New(const char* file_name) +int imFileFormatSGI::New(const char* file_name) { /* opens the binary file for writing with motorola byte order */ handle = imBinFileNew(file_name); @@ -230,14 +239,14 @@ int imFormatSGI::New(const char* file_name) return IM_ERR_NONE; } -void imFormatSGI::Close() +void imFileFormatSGI::Close() { if (this->starttab) free(this->starttab); if (this->lengthtab) free(this->lengthtab); imBinFileClose(handle); } -void* imFormatSGI::Handle(int index) +void* imFileFormatSGI::Handle(int index) { if (index == 0) return (void*)this->handle; @@ -245,7 +254,7 @@ void* imFormatSGI::Handle(int index) return NULL; } -int imFormatSGI::ReadImageInfo(int index) +int imFileFormatSGI::ReadImageInfo(int index) { (void)index; unsigned short word_value, dimension, depth; @@ -378,7 +387,7 @@ int imFormatSGI::ReadImageInfo(int index) return IM_ERR_NONE; } -int imFormatSGI::WriteImageInfo() +int imFileFormatSGI::WriteImageInfo() { unsigned int dword_value; unsigned short word_value; @@ -487,7 +496,7 @@ int imFormatSGI::WriteImageInfo() return IM_ERR_NONE; } -int imFormatSGI::ReadImageData(void* data) +int imFileFormatSGI::ReadImageData(void* data) { int count = imFileLineBufferCount(this); @@ -533,7 +542,7 @@ int imFormatSGI::ReadImageData(void* data) return IM_ERR_NONE; } -int imFormatSGI::WriteImageData(void* data) +int imFileFormatSGI::WriteImageData(void* data) { int count = imFileLineBufferCount(this); diff --git a/src/im_format_tga.cpp b/src/im_format_tga.cpp index 8e8e176..86e968a 100644 --- a/src/im_format_tga.cpp +++ b/src/im_format_tga.cpp @@ -2,7 +2,7 @@ * \brief TGA - Truevision Graphics Adapter File * * See Copyright Notice in im_lib.h - * $Id: im_format_tga.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_format_tga.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ #include "im_format.h" @@ -207,7 +207,7 @@ static const char* iTGACompTable[2] = "RLE" }; -class imFormatTGA: public imFormat +class imFileFormatTGA: public imFileFormatBase { imBinFile* handle; /* the binary file handle */ unsigned char id_lenght; @@ -220,6 +220,22 @@ class imFormatTGA: public imFormat int SaveExtensionArea(); public: + imFileFormatTGA(const imFormat* _iformat): imFileFormatBase(_iformat) {} + ~imFileFormatTGA() {} + + int Open(const char* file_name); + int New(const char* file_name); + void Close(); + void* Handle(int index); + int ReadImageInfo(int index); + int ReadImageData(void* data); + int WriteImageInfo(); + int WriteImageData(void* data); +}; + +class imFormatTGA: public imFormat +{ +public: imFormatTGA() :imFormat("TGA", "Truevision Graphics Adapter File", @@ -230,14 +246,7 @@ public: {} ~imFormatTGA() {} - int Open(const char* file_name); - int New(const char* file_name); - void Close(); - void* Handle(int index); - int ReadImageInfo(int index); - int ReadImageData(void* data); - int WriteImageInfo(); - int WriteImageData(void* data); + imFileFormatBase* Create(void) const { return new imFileFormatTGA(this); } int CanWrite(const char* compression, int color_mode, int data_type) const; }; @@ -246,7 +255,7 @@ void imFormatRegisterTGA(void) imFormatRegister(new imFormatTGA()); } -int imFormatTGA::Open(const char* file_name) +int imFileFormatTGA::Open(const char* file_name) { /* opens the binary file for reading with intel byte order */ handle = imBinFileOpen(file_name); @@ -294,7 +303,7 @@ int imFormatTGA::Open(const char* file_name) return IM_ERR_NONE; } -int imFormatTGA::New(const char* file_name) +int imFileFormatTGA::New(const char* file_name) { /* opens the binary file for writing with intel byte order */ handle = imBinFileNew(file_name); @@ -306,12 +315,12 @@ int imFormatTGA::New(const char* file_name) return IM_ERR_NONE; } -void imFormatTGA::Close() +void imFileFormatTGA::Close() { imBinFileClose(handle); } -void* imFormatTGA::Handle(int index) +void* imFileFormatTGA::Handle(int index) { if (index == 0) return (void*)this->handle; @@ -319,7 +328,7 @@ void* imFormatTGA::Handle(int index) return NULL; } -int imFormatTGA::ReadImageInfo(int index) +int imFileFormatTGA::ReadImageInfo(int index) { (void)index; unsigned char byte_value; @@ -436,7 +445,7 @@ int imFormatTGA::ReadImageInfo(int index) return IM_ERR_NONE; } -int imFormatTGA::WriteImageInfo() +int imFileFormatTGA::WriteImageInfo() { unsigned char byte_value; unsigned short word_value; @@ -487,7 +496,7 @@ int imFormatTGA::WriteImageInfo() int length = 0; const char* desc_attrib = (const char*)attrib_table->Get("Title", NULL, &length); - if (desc) + if (desc_attrib) { if (length > 255) this->id_lenght = 255; @@ -600,7 +609,7 @@ static long iTGARGB2Color(int c, unsigned char *colors, int map_bpp) return imColorEncode(r, g, b); } -int imFormatTGA::ReadPalette() +int imFileFormatTGA::ReadPalette() { int map_size = imFileLineSizeAligned(this->palette_count, this->map_bpp, 1); unsigned char* tga_colors = (unsigned char*) malloc(map_size); @@ -622,7 +631,7 @@ int imFormatTGA::ReadPalette() return 1; } -int imFormatTGA::WritePalette() +int imFileFormatTGA::WritePalette() { unsigned char tga_color[256*3]; @@ -642,7 +651,7 @@ int imFormatTGA::WritePalette() return 1; } -int imFormatTGA::LoadExtensionArea() +int imFileFormatTGA::LoadExtensionArea() { unsigned int dword_value; imBinFileSeekFrom(handle, -26); @@ -807,7 +816,7 @@ static void iGetRational(float fvalue, int *num, int *den) *num = imRound(fvalue); } -int imFormatTGA::SaveExtensionArea() +int imFileFormatTGA::SaveExtensionArea() { unsigned int dword_value; unsigned short word_value; @@ -971,7 +980,7 @@ int imFormatTGA::SaveExtensionArea() return 1; } -void imFormatTGA::FixRGB() +void imFileFormatTGA::FixRGB() { int x; imbyte* byte_data = (imbyte*)this->line_buffer; @@ -1010,7 +1019,7 @@ void imFormatTGA::FixRGB() } } -int imFormatTGA::ReadImageData(void* data) +int imFileFormatTGA::ReadImageData(void* data) { imCounterTotal(this->counter, this->height, "Reading TGA..."); @@ -1044,7 +1053,7 @@ int imFormatTGA::ReadImageData(void* data) return IM_ERR_NONE; } -int imFormatTGA::WriteImageData(void* data) +int imFileFormatTGA::WriteImageData(void* data) { imCounterTotal(this->counter, this->height, "Writing TGA..."); diff --git a/src/im_format_tiff.cpp b/src/im_format_tiff.cpp index 98467f9..1c55a55 100644 --- a/src/im_format_tiff.cpp +++ b/src/im_format_tiff.cpp @@ -3,7 +3,7 @@ * * See Copyright Notice in im_lib.h * See libTIFF Copyright Notice in tiff.h - * $Id: im_format_tiff.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_format_tiff.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ #include "im_format.h" @@ -590,7 +590,7 @@ static void iTIFFWriteAttributes(TIFF* tiff, imAttribTable* attrib_table) iTIFFWriteCustomTags(tiff, attrib_table); } -class imFormatTIFF: public imFormat +class imFileFormatTIFF: public imFileFormatBase { TIFF* tiff; int invert, // must invert black and white reference @@ -606,6 +606,22 @@ class imFormatTIFF: public imFormat int ReadTileline(void* line_buffer, int row, int plane); public: + imFileFormatTIFF(const imFormat* _iformat): imFileFormatBase(_iformat) {} + ~imFileFormatTIFF() {} + + int Open(const char* file_name); + int New(const char* file_name); + void Close(); + void* Handle(int index); + int ReadImageInfo(int index); + int ReadImageData(void* data); + int WriteImageInfo(); + int WriteImageData(void* data); +}; + +class imFormatTIFF: public imFormat +{ +public: imFormatTIFF() :imFormat("TIFF", "Tagged Image File Format", @@ -616,14 +632,7 @@ public: {} ~imFormatTIFF() {} - int Open(const char* file_name); - int New(const char* file_name); - void Close(); - void* Handle(int index); - int ReadImageInfo(int index); - int ReadImageData(void* data); - int WriteImageInfo(); - int WriteImageData(void* data); + imFileFormatBase* Create(void) const { return new imFileFormatTIFF(this); } int CanWrite(const char* compression, int color_mode, int data_type) const; }; @@ -639,7 +648,7 @@ void imFormatRegisterTIFF(void) imFormatRegister(new imFormatTIFF()); } -int imFormatTIFF::Open(const char* file_name) +int imFileFormatTIFF::Open(const char* file_name) { this->tiff = TIFFOpen(file_name, "r"); if (this->tiff == NULL) @@ -659,7 +668,7 @@ int imFormatTIFF::Open(const char* file_name) return IM_ERR_NONE; } -int imFormatTIFF::New(const char* file_name) +int imFileFormatTIFF::New(const char* file_name) { this->tiff = TIFFOpen(file_name, "w"); if (this->tiff == NULL) @@ -670,7 +679,7 @@ int imFormatTIFF::New(const char* file_name) return IM_ERR_NONE; } -void imFormatTIFF::Close() +void imFileFormatTIFF::Close() { if (this->tile_buf) { @@ -682,7 +691,7 @@ void imFormatTIFF::Close() TIFFClose(this->tiff); } -void* imFormatTIFF::Handle(int index) +void* imFileFormatTIFF::Handle(int index) { if (index == 0) return (void*)this->tiff->tif_fd; @@ -692,7 +701,7 @@ void* imFormatTIFF::Handle(int index) return NULL; } -int imFormatTIFF::ReadImageInfo(int index) +int imFileFormatTIFF::ReadImageInfo(int index) { this->cpx_int = 0; this->invert = 0; @@ -1011,7 +1020,7 @@ int imFormatTIFF::ReadImageInfo(int index) return IM_ERR_NONE; } -int imFormatTIFF::WriteImageInfo() +int imFileFormatTIFF::WriteImageInfo() { this->file_color_mode = this->user_color_mode; this->file_data_type = this->user_data_type; @@ -1254,7 +1263,7 @@ static void iTIFFLabFix(void* line_buffer, int width, int data_type, int is_new) // Do NOT know how it is encoded for other data types. } -int imFormatTIFF::ReadTileline(void* line_buffer, int row, int plane) +int imFileFormatTIFF::ReadTileline(void* line_buffer, int row, int plane) { int t; @@ -1295,7 +1304,7 @@ int imFormatTIFF::ReadTileline(void* line_buffer, int row, int plane) return 1; } -int imFormatTIFF::ReadImageData(void* data) +int imFileFormatTIFF::ReadImageData(void* data) { int count = imFileLineBufferCount(this); @@ -1348,7 +1357,7 @@ int imFormatTIFF::ReadImageData(void* data) return IM_ERR_NONE; } -int imFormatTIFF::WriteImageData(void* data) +int imFileFormatTIFF::WriteImageData(void* data) { int count = imFileLineBufferCount(this); diff --git a/src/im_format_wmv.cpp b/src/im_format_wmv.cpp index 3b411c3..a4733a5 100644 --- a/src/im_format_wmv.cpp +++ b/src/im_format_wmv.cpp @@ -2,7 +2,7 @@ * \brief WMV - Windows Media Video Format * * See Copyright Notice in im_lib.h - * $Id: im_format_wmv.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $ + * $Id: im_format_wmv.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ */ #include "im_format.h" @@ -494,7 +494,7 @@ static GUID iWMFCompFindSubType(const char* compression) return WMMEDIASUBTYPE_Base; } -class imFormatWMV: public imFormat +class imFileFormatWMV: public imFileFormatBase { IWMSyncReader* Reader; // When reading WM_MEDIA_TYPE* MediaType; @@ -526,6 +526,22 @@ class imFormatWMV: public imFormat int SetProfile(); public: + imFileFormatWMV(const imFormat* _iformat): imFileFormatBase(_iformat) {} + ~imFileFormatWMV() {} + + int Open(const char* file_name); + int New(const char* file_name); + void Close(); + void* Handle(int index); + int ReadImageInfo(int index); + int ReadImageData(void* data); + int WriteImageInfo(); + int WriteImageData(void* data); +}; + +class imFormatWMV: public imFormat +{ +public: imFormatWMV() :imFormat("WMV", "Windows Media Video Format", @@ -536,14 +552,7 @@ public: {} ~imFormatWMV() {} - int Open(const char* file_name); - int New(const char* file_name); - void Close(); - void* Handle(int index); - int ReadImageInfo(int index); - int ReadImageData(void* data); - int WriteImageInfo(); - int WriteImageData(void* data); + imFileFormatBase* Create(void) const { return new imFileFormatWMV(this); } int CanWrite(const char* compression, int color_mode, int data_type) const; }; @@ -552,7 +561,7 @@ void imFormatRegisterWMV(void) imFormatRegister(new imFormatWMV()); } -int imFormatWMV::Open(const char* file_name) +int imFileFormatWMV::Open(const char* file_name) { /* initializes COM */ CoInitialize(NULL); @@ -675,7 +684,7 @@ int imFormatWMV::Open(const char* file_name) return IM_ERR_NONE; } -int imFormatWMV::New(const char* file_name) +int imFileFormatWMV::New(const char* file_name) { /* initializes COM */ CoInitialize(NULL); @@ -698,7 +707,7 @@ int imFormatWMV::New(const char* file_name) return IM_ERR_NONE; } -void imFormatWMV::Close() +void imFileFormatWMV::Close() { HeaderInfo->Release(); @@ -720,7 +729,7 @@ void imFormatWMV::Close() CoUninitialize(); } -void* imFormatWMV::Handle(int index) +void* imFileFormatWMV::Handle(int index) { if (index == 1) { @@ -733,7 +742,7 @@ void* imFormatWMV::Handle(int index) return NULL; } -void imFormatWMV::iReadAttrib(imAttribTable* attrib_table) +void imFileFormatWMV::iReadAttrib(imAttribTable* attrib_table) { WORD StreamNumber = 0; WORD attrib_list_count = 0; @@ -916,12 +925,12 @@ static int iAttribSet(void* user_data, int index, const char* name, int data_typ return 1; } -void imFormatWMV::iWriteAttrib(imAttribTable* attrib_table) +void imFileFormatWMV::iWriteAttrib(imAttribTable* attrib_table) { attrib_table->ForEach((void*)HeaderInfo, iAttribSet); } -void imFormatWMV::CalcFPS() +void imFileFormatWMV::CalcFPS() { LONGLONG AvgTimePerFrame = 0; @@ -970,7 +979,7 @@ void imFormatWMV::CalcFPS() } } -void imFormatWMV::SetOutputProps() +void imFileFormatWMV::SetOutputProps() { DWORD output_number; Reader->GetOutputNumberForStream(stream_number, &output_number); @@ -1002,7 +1011,7 @@ void imFormatWMV::SetOutputProps() } } -int imFormatWMV::SetInputProps() +int imFileFormatWMV::SetInputProps() { DWORD input_count; Writer->GetInputCount(&input_count); @@ -1078,7 +1087,7 @@ int imFormatWMV::SetInputProps() return 1; } -int imFormatWMV::SetProfile() +int imFileFormatWMV::SetProfile() { HRESULT hr; @@ -1144,7 +1153,7 @@ int imFormatWMV::SetProfile() return 1; } -int imFormatWMV::ReadImageInfo(int index) +int imFileFormatWMV::ReadImageInfo(int index) { if (this->seekable && this->current_frame != index) { @@ -1268,7 +1277,7 @@ int imFormatWMV::ReadImageInfo(int index) return IM_ERR_NONE; } -int imFormatWMV::WriteImageInfo() +int imFileFormatWMV::WriteImageInfo() { if (this->bmiHeader) { @@ -1357,7 +1366,7 @@ int imFormatWMV::WriteImageInfo() return IM_ERR_NONE; } -void imFormatWMV::ReadPalette(unsigned char* bmp_colors) +void imFileFormatWMV::ReadPalette(unsigned char* bmp_colors) { /* convert the color map to the IM format */ for (int c = 0; c < this->palette_count; c++) @@ -1369,7 +1378,7 @@ void imFormatWMV::ReadPalette(unsigned char* bmp_colors) } } -void imFormatWMV::WritePalette(unsigned char* bmp_colors) +void imFileFormatWMV::WritePalette(unsigned char* bmp_colors) { /* convert the color map to the IM format */ for (int c = 0; c < this->palette_count; c++) @@ -1380,7 +1389,7 @@ void imFormatWMV::WritePalette(unsigned char* bmp_colors) } } -void imFormatWMV::InitMasks(imDib* dib) +void imFileFormatWMV::InitMasks(imDib* dib) { if (dib->bmih->biCompression == BI_BITFIELDS) { @@ -1429,7 +1438,7 @@ void imFormatWMV::InitMasks(imDib* dib) } } -void imFormatWMV::FixRGB(int bpp) +void imFileFormatWMV::FixRGB(int bpp) { int x; @@ -1486,7 +1495,7 @@ void imFormatWMV::FixRGB(int bpp) } } -int imFormatWMV::ReadImageData(void* data) +int imFileFormatWMV::ReadImageData(void* data) { imCounterTotal(this->counter, this->height, "Reading WMV Frame..."); @@ -1552,7 +1561,7 @@ int imFormatWMV::ReadImageData(void* data) return IM_ERR_NONE; } -int imFormatWMV::WriteImageData(void* data) +int imFileFormatWMV::WriteImageData(void* data) { imCounterTotal(this->counter, this->height, "Writing WMV Frame..."); diff --git a/test/im_copy.cpp b/test/im_copy.cpp index dd0b82e..6663a32 100644 --- a/test/im_copy.cpp +++ b/test/im_copy.cpp @@ -54,7 +54,7 @@ int main(int argc, char* argv[]) } imFormatRegisterAVI(); - imFormatRegisterWMV(); +// imFormatRegisterWMV(); void* data = NULL; imFile* ifile = NULL; diff --git a/test/im_copy.vcproj b/test/im_copy.vcproj index 051b110..c2e9102 100644 --- a/test/im_copy.vcproj +++ b/test/im_copy.vcproj @@ -1,111 +1,175 @@ <?xml version="1.0" encoding="Windows-1252"?> <VisualStudioProject ProjectType="Visual C++" - Version="7.10" + Version="8.00" Name="im_copy" ProjectGUID="{909637FA-8229-45A9-9F42-53D8ED5F91C5}" - Keyword="Win32Proj"> + Keyword="Win32Proj" + > <Platforms> <Platform - Name="Win32"/> + Name="Win32" + /> </Platforms> + <ToolFiles> + </ToolFiles> <Configurations> <Configuration Name="Debug|Win32" OutputDirectory="Debug" IntermediateDirectory="Debug" ConfigurationType="1" - CharacterSet="2"> + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> <Tool Name="VCCLCompilerTool" Optimization="0" - AdditionalIncludeDirectories="../../include" + AdditionalIncludeDirectories="../include" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" - MinimalRebuild="TRUE" + MinimalRebuild="true" BasicRuntimeChecks="3" - RuntimeLibrary="4" + RuntimeLibrary="0" UsePrecompiledHeader="0" WarningLevel="3" - Detect64BitPortabilityProblems="TRUE" - DebugInformationFormat="4"/> + Detect64BitPortabilityProblems="true" + DebugInformationFormat="4" + /> <Tool - Name="VCCustomBuildTool"/> + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> <Tool Name="VCLinkerTool" - AdditionalDependencies="im.lib im_avi.lib im_wmv.lib vfw32.lib wmvcore.lib" + AdditionalDependencies="im.lib im_avi.lib vfw32.lib" OutputFile="$(OutDir)/im_copy.exe" LinkIncremental="2" - AdditionalLibraryDirectories="C:\APP\LNG\WMFSDK9\lib;../../lib/vc7" - GenerateDebugInformation="TRUE" + AdditionalLibraryDirectories="D:\LNG\WMFSDK9\lib;../lib" + GenerateDebugInformation="true" ProgramDatabaseFile="$(OutDir)/im_copy.pdb" SubSystem="1" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> + TargetMachine="1" + /> <Tool - Name="VCPreBuildEventTool"/> + Name="VCALinkTool" + /> <Tool - Name="VCPreLinkEventTool"/> + Name="VCManifestTool" + /> <Tool - Name="VCResourceCompilerTool"/> + Name="VCXDCMakeTool" + /> <Tool - Name="VCWebServiceProxyGeneratorTool"/> + Name="VCBscMakeTool" + /> <Tool - Name="VCXMLDataGeneratorTool"/> + Name="VCFxCopTool" + /> <Tool - Name="VCWebDeploymentTool"/> + Name="VCAppVerifierTool" + /> <Tool - Name="VCManagedWrapperGeneratorTool"/> + Name="VCWebDeploymentTool" + /> <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + Name="VCPostBuildEventTool" + /> </Configuration> <Configuration Name="Release|Win32" OutputDirectory="Release" IntermediateDirectory="Release" ConfigurationType="1" - CharacterSet="2"> + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> <Tool Name="VCCLCompilerTool" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" - RuntimeLibrary="4" + RuntimeLibrary="0" UsePrecompiledHeader="0" WarningLevel="3" - Detect64BitPortabilityProblems="TRUE" - DebugInformationFormat="3"/> + Detect64BitPortabilityProblems="true" + DebugInformationFormat="3" + /> <Tool - Name="VCCustomBuildTool"/> + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> <Tool Name="VCLinkerTool" OutputFile="$(OutDir)/im_copy.exe" LinkIncremental="1" - GenerateDebugInformation="TRUE" + GenerateDebugInformation="true" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> + TargetMachine="1" + /> <Tool - Name="VCPreBuildEventTool"/> + Name="VCALinkTool" + /> <Tool - Name="VCPreLinkEventTool"/> + Name="VCManifestTool" + /> <Tool - Name="VCResourceCompilerTool"/> + Name="VCXDCMakeTool" + /> <Tool - Name="VCWebServiceProxyGeneratorTool"/> + Name="VCBscMakeTool" + /> <Tool - Name="VCXMLDataGeneratorTool"/> + Name="VCFxCopTool" + /> <Tool - Name="VCWebDeploymentTool"/> + Name="VCAppVerifierTool" + /> <Tool - Name="VCManagedWrapperGeneratorTool"/> + Name="VCWebDeploymentTool" + /> <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + Name="VCPostBuildEventTool" + /> </Configuration> </Configurations> <References> @@ -114,9 +178,11 @@ <Filter Name="Source Files" Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx" - UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"> + UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" + > <File - RelativePath=".\im_copy.cpp"> + RelativePath=".\im_copy.cpp" + > </File> </Filter> </Files> |