forked from KolibriOS/kolibrios
1b6868a022
* decoder for animated GIFs * some fixes in PNG and JPEG decoders * internal image representation now allows 15 and 16 bpp (without conversions in decoders) * decoder for TGA, Z80 from Nable git-svn-id: svn://kolibrios.org@1079 a494cfbc-eb01-0410-851d-a64ba20cac60
143 lines
6.3 KiB
HTML
143 lines
6.3 KiB
HTML
;;================================================================================================;;
|
|
;;//// 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 <http://www.gnu.org/licenses/>. ;;
|
|
;; ;;
|
|
;;================================================================================================;;
|
|
|
|
|
|
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
|