;;================================================================================================;; ;;//// gif.inc //// (c) mike.dld, 2007-2008 //////////////////////////////////////////////////////;; ;;================================================================================================;; ;; ;; ;; This file is part of Common development libraries (Libs-Dev). ;; ;; ;; ;; Libs-Dev is free software: you can redistribute it and/or modify it under the terms of the GNU ;; ;; Lesser General Public License as published by the Free Software Foundation, either version 2.1 ;; ;; of the License, or (at your option) any later version. ;; ;; ;; ;; Libs-Dev is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without ;; ;; even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; ;; Lesser General Public License for more details. ;; ;; ;; ;; You should have received a copy of the GNU Lesser General Public License along with Libs-Dev. ;; ;; If not, see . ;; ;; ;; ;;================================================================================================;; struct gif.FileHeader ; GIF87a Signature db 3 dup(?) ; Header Signature (always "GIF") Version db 3 dup(?) ; GIF format version("87a" or "89a") ends struct gif.LogicalScreenDescriptor ; GIF87a ScreenWidth dw ? ; Width of Display Screen in Pixels ScreenHeight dw ? ; Height of Display Screen in Pixels Packed db ? ; Screen and Color Map Information BackgroundColor db ? ; Background Color Index AspectRatio db ? ; Pixel Aspect Ratio ends gif.LSD.Packed.SizeOfGlobalColorTableMask = 000000111b gif.LSD.Packed.SizeOfGlobalColorTableShift = 0 gif.LSD.Packed.ColorTableSortFlag = 000001000b gif.LSD.Packed.ColorTableSortShift = 3 gif.LSD.Packed.ColorResolutionMask = 001110000b gif.LSD.Packed.ColorResolutionShift = 4 gif.LSD.Packed.GlobalColorTableFlag = 010000000b gif.LSD.Packed.GlobalColorTableShift = 7 struct gif.Header file gif.FileHeader lsd gif.LogicalScreenDescriptor ends struct gif.RgbTriplet ; GIF87a Red db ? ; Red Color Element Green db ? ; Green Color Element Blue db ? ; Blue Color Element ends struct gif.Block Introducer db ? ends gif.Block.Introducer.EndOfData = 0x00 gif.Block.Introducer.Extension = 0x21 gif.Block.Introducer.ImageDescriptor = 0x2C gif.Block.Introducer.EndOfFile = 0x3B struct gif.ImageDescriptor ; GIF87a ; we read Introducer before parsing gif.ImageDescriptor, ; so it is convenient to not include it in struct ; b gif.Block ; Introducer = 2Ch (',') Left dw ? ; X position of image on the display Top dw ? ; Y position of image on the display Width dw ? ; Width of the image in pixels Height dw ? ; Height of the image in pixels Packed db ? ; Image and Color Table Data Information ends gif.ID.Packed.SizeOfLocalColorTableMask = 000000111b gif.ID.Packed.SizeOfLocalColorTableShift = 0 gif.ID.Packed.SortFlag = 000100000b gif.ID.Packed.SortShift = 5 gif.ID.Packed.InterleaceFlag = 001000000b gif.ID.Packed.InterleaceShift = 6 gif.ID.Packed.LocalColorTableFlag = 010000000b gif.ID.Packed.LocalColorTableShift = 7 struct gif.Extension b gif.Block ; Introducer = 21h ('|') Label db ? ; Extension label ends gif.Extension.Label.PlainText = 0x01 gif.Extension.Label.GraphicsControl = 0xF9 gif.Extension.Label.Comment = 0xFE gif.Extension.Label.Application = 0xFF struct gif.PlainTextExtension ; GIF89a ; e gif.Extension ; Label = 01h ; BlockSize db ? ; Size of Extension Block (always 0Ch) TextGridLeft dw ? ; X position of text grid in pixels TextGridTop dw ? ; Y position of text grid in pixels TextGridWidth dw ? ; Width of the text grid in pixels TextGridHeight dw ? ; Height of the text grid in pixels CellWidth db ? ; Width of a grid cell in pixels CellHeight db ? ; Height of a grid cell in pixels TextFgColorIndex db ? ; Text foreground color index value TextBgColorIndex db ? ; Text background color index value PlainTextData db ? ; The Plain Text data (*) ; Terminator db ? ; Block Terminator (always 0) ends struct gif.GraphicsControlExtension ; GIF89a ; e gif.Extension ; Label = F9h ; BlockSize db ? ; Size of remaining fields (always 04h) ; previous fields are not included in this structure for convenience ; (they are parsed before this) Packed db ? ; Method of graphics disposal to use DelayTime dw ? ; Hundredths of seconds to wait ColorIndex db ? ; Transparent Color Index ; Terminator db ? ; Block Terminator (always 0) ends struct gif.CommentExtension ; GIF89a e gif.Extension ; Label = FEh CommentData db ? ; Pointer to Comment Data sub-blocks (*) ; Terminator db ? ; Block Terminator (always 0) ends struct gif.ApplicationExtension ; GIF89a e gif.Extension ; Label = FFh BlockSize db ? ; Size of Extension Block (always 0Bh) Identifier db 8 dup(?) ; Application Identifier AuthentCode db 3 dup(?) ; Application Authentication Code ApplicationData db ? ; Point to Application Data sub-blocks (*) ; Terminator db ? ; Block Terminator (always 0) ends ;;------------------------------------------------------------------------------------------------;; struct gif.Image info gif.ImageDescriptor gce gif.GraphicsControlExtension ; lsd gif.LogicalScreenDescriptor ; saved only in first image ends gif.Null equ 0x1000