GIFObject (windows only)

Share your advanced PureBasic knowledge/code with the community.
User avatar
ts-soft
Always Here
Always Here
Posts: 5756
Joined: Thu Jun 24, 2004 2:44 pm
Location: Berlin - Germany

GIFObject (windows only)

Post by ts-soft »

This is a small objectclass to use GIFs, not the same as AnimGIFGadget.
This code make it possible, for example, to save the frames from the gif,
with PB-Functions.

Description GIFObject

As the first we must provide the object, this goes in such a way:

Define.GIFObject myvariable = NewGIFObject()

Now we can use the methods of the Objects.
The following methods are available:

LoadImage()
Syntax:
Result = myvariable\LoadImage.i(ID, FileName.s)
Parameters:
ID = Specifies the number by which to identify the loaded image. #PB_Any
can be specified to autogenerate this number.

FileName = Specifies the name of the file to load. If the filename does not
include a full path, it is interpreted relative to the current directory.

Return value:
Returns nonzero if the image was loaded successfully and zero if the image
could not be loaded. If #PB_Any was specified as the ID parameter then
the autogenerated number is returned on success.

CatchImage()
Syntax:
Result = myvariable\CatchImage.i(ID, *Memory, Size.l)
Parameters:
ID = Specifies the number by which to identify the loaded image. #PB_Any can
be specified to autogenerate this number.

*Memory = Specifies the memory address from which to load the image.

Size = Specifies the size of the image in bytes.

Return value:
Returns nonzero if the image was loaded successfully and zero if the image could
not be loaded. If #PB_Any was specified as the #Image parameter then the
autogenerated number is returned on success.

FreeImage()
Syntax:
myvariable\FreeImage(ID = #PB_Any)
Parameters:
ID (optional) = Free the specified image and release its associated memory. If no ID is given, everything become with this Lib to generated pictures released, however, not with the Function GetFrame () provided!

Return value:
This method has no return value.

GetFrame()
Syntax:
Result = myvariable\GetFrame(ID, Number.l)
Parameters:
ID = The ID, used by LoadImage() or CatchImage(), or the result with information from #PB_Any.
Number = The number of the Frame, the counting begins with 0 and ends with CountFrames() - 1

Return value:
image (not the ImageID!)

CountFrames()
Syntax:
Result = myvariable\CountFrames(ID)
Parameters:
ID = The ID, used by LoadImage() or CatchImage() or the result with information from #PB_Any.

Return value:
Count of Frames.

GetDelayTime()
Syntax:
Result = myvariable\GetDelayTime(ID, Number.l = 0)
Parameters:
ID = The ID, used by LoadImage() or CatchImage() or the result with information from #PB_Any.
Number (optional) = The number of Frames. (Default = Frame 0).

Return value:
Delaytime in ms

Destroy()
Syntax:
myvariable\Destroy()
Parameters:
none

Return value:
none

This method is to be called always at the end of the use of this Lib. She gives all images,
as far as do not happen yet, as well as all used memories, as well as gdiplus.dll, again freely.
With GetFrame () to provided images are not released. To release these images you can use the
PB function FreeImage().

The source is following in the next Thread.

Sorry for my bad english.
PureBasic 5.73 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Old bugs good, new bugs bad! Updates are evil: might fix old bugs and introduce no new ones.
Image
User avatar
ts-soft
Always Here
Always Here
Posts: 5756
Joined: Thu Jun 24, 2004 2:44 pm
Location: Berlin - Germany

Re: GIFObject (windows only)

Post by ts-soft »

[GIFObject.pbi]

Code: Select all

; Copyright (c) 2012 Thomas <ts-soft> Schulz

; Permission is hereby granted, free of charge, to any person obtaining a copy of this
; software and associated documentation files (the "Software"), to deal in the Software
; without restriction, including without limitation the rights to use, copy, modify, merge,
; publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to
; whom the Software is furnished to do so, subject to the following conditions:

; The above copyright notice and this permission notice shall be included in all copies or
; substantial portions of the Software.

; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

;==================================================================
;
; Library:           GIFObject
; Author:            Thomas <ts-soft> Schulz
; Date:              Mrz 11, 2012
; Version:           1.2.1
; Target OS:         Windows 2000 and higher
; Target Compiler:   PureBasic 4.60 and later
; Requires:          gdiplus.dll
;==================================================================

; History:
; 1.2, Mrz 13, 2012
; - removed backcolor
; + added support transparency
;
; 1.1
; added optional backcolor to LoadImage() and CatchImage()

CompilerIf Defined(GdiplusStartupInput, #PB_Structure) = 0
Structure GdiplusStartupInput
    GdiPlusVersion.l
  CompilerIf #PB_Compiler_Processor = #PB_Processor_x64 ; ALIGN next pointer to 8
    PB_Alignment.b[4]
  CompilerEndIf
    *DebugEventCallback.DebugEventProc
    SuppressBackgroundThread.i
    SuppressExternalCodecs.i
EndStructure
CompilerEndIf

#PropertyTagFrameDelay = $5100

;{ Prototypes
Prototype __GdipCreateBitmapFromFile(filename.p-unicode, *bitmap)
Prototype __GdipCreateFromHDC(hdc, *graphics)
Prototype __GdipDeleteGraphics(*graphics)
Prototype __GdipDisposeImage(*image)
Prototype __GdipDrawImageI(*graphics, *image, x.l, y.l)
Prototype __GdipGetImageWidth(*image, *width)
Prototype __GdipGetImageHeight(*image, *height)
Prototype __GdipImageGetFrameCount(*image, *dimensionID.GUID, *count)
Prototype __GdipImageGetFrameDimensionsList(*image, *dimensionID.GUID, count.l)
Prototype __GdipImageSelectActiveFrame(*image, *dimensionID.GUID, frameIndex.l)
Prototype __GdipLoadImageFromStream(*stream, *bitmap)
Prototype __GdipGetPropertyItemSize(*image, propId.l, *size)
Prototype __GdipGetPropertyItem(*image, propId.l, propSize.l, *buffer)
Prototype __GdiplusShutdown(token)
Prototype __GdiplusStartup(*token, *input.GdiplusStartupInput, *output)
;}

Interface GIFObject
  LoadImage.i(ID, FileName.s)
  CatchImage.i(ID, *Memory, Size.l)
  FreeImage(ID = #PB_Any)
  GetFrame(ID, Number.l)
  CountFrames(ID)
  GetDelayTime(ID, Number.l = 0)
  Destroy()
EndInterface

Structure GIFImageList
  ID.i
  bitmap.i
  guid.GUID
  width.l
  height.l
  count.l
  pos.i
  *mem
  *mem2
EndStructure

Structure GIFClassTemplate
  *vTable
  ; GDI Functionpointer
  GdipCreateBitmapFromFile.__GdipCreateBitmapFromFile
  GdipCreateFromHDC.__GdipCreateFromHDC
  GdipDeleteGraphics.__GdipDeleteGraphics
  GdipDisposeImage.__GdipDisposeImage
  GdipDrawImageI.__GdipDrawImageI
  GdipGetImageWidth.__GdipGetImageWidth
  GdipGetImageHeight.__GdipGetImageHeight
  GdipImageGetFrameCount.__GdipImageGetFrameCount
  GdipImageGetFrameDimensionsList.__GdipImageGetFrameDimensionsList
  GdipImageSelectActiveFrame.__GdipImageSelectActiveFrame
  GdipLoadImageFromStream.__GdipLoadImageFromStream
  GdipGetPropertyItemSize.__GdipGetPropertyItemSize
  GdipGetPropertyItem.__GdipGetPropertyItem
  GdiplusShutdown.__GdiplusShutdown
  GdiplusStartup.__GdiplusStartup
  ;
  hDLL.i
  Token.i
  ;
  List ImageObjects.GIFImageList()
EndStructure

Procedure.i NewGIFObject()
  Protected *object.GIFClassTemplate
  Protected gdpsi.GdiplusStartupInput
  Protected token.i
  
  *object = AllocateMemory(SizeOf(GIFClassTemplate))
  If *object
    InitializeStructure(*object, GIFClassTemplate)
    With *object
      \vTable = ?VTable_GIFClass
      \hDLL = OpenLibrary(#PB_Any, "gdiplus.dll")
      If \hDLL <> 0
        \GdipCreateBitmapFromFile = GetFunction(\hDLL, "GdipCreateBitmapFromFile")
        \GdipCreateFromHDC = GetFunction(\hDLL, "GdipCreateFromHDC")
        \GdipDeleteGraphics = GetFunction(\hDLL, "GdipDeleteGraphics")
        \GdipDisposeImage = GetFunction(\hDLL, "GdipDisposeImage")
        \GdipDrawImageI = GetFunction(\hDLL, "GdipDrawImageI")
        \GdipGetImageWidth = GetFunction(\hDLL, "GdipGetImageWidth")
        \GdipGetImageHeight = GetFunction(\hDLL, "GdipGetImageHeight")
        \GdipImageGetFrameCount = GetFunction(\hDLL, "GdipImageGetFrameCount")
        \GdipImageGetFrameDimensionsList = GetFunction(\hDLL, "GdipImageGetFrameDimensionsList")
        \GdipImageSelectActiveFrame = GetFunction(\hDLL, "GdipImageSelectActiveFrame")
        \GdipLoadImageFromStream = GetFunction(\hDLL, "GdipLoadImageFromStream")
        \GdipGetPropertyItemSize = GetFunction(\hDLL, "GdipGetPropertyItemSize")
        \GdipGetPropertyItem = GetFunction(\hDLL, "GdipGetPropertyItem")
        \GdiplusShutdown = GetFunction(\hDLL, "GdiplusShutdown")
        \GdiplusStartup = GetFunction(\hDLL, "GdiplusStartup")
        gdpsi\GdiPlusVersion = 1
        \GdiplusStartup(@token, gdpsi, 0)
        \Token = token
      Else
        ClearStructure(*object, GIFClassTemplate)
        FreeMemory(*object)
        *object = 0
      EndIf
    EndWith
  EndIf
  ProcedureReturn *object
EndProcedure

Procedure.i GIFClass_LoadImage(*this.GIFClassTemplate, ID, FileName.s)
  Protected bitmap.i, width.l, height.l, guid.GUID, count.l, size.i
  Protected image.i, hdc.i, graphics.i, *mem
  
  With *this
    AddElement(\ImageObjects())
    \GdipCreateBitmapFromFile(FileName, @bitmap)
    If bitmap
      \ImageObjects()\bitmap = bitmap
      \GdipGetImageWidth(bitmap, @width)
      \ImageObjects()\width = width
      \GdipGetImageHeight(bitmap, @height)
      \ImageObjects()\height = height
      \GdipImageGetFrameDimensionsList(bitmap, @guid, 1)
      \ImageObjects()\guid = guid
      \GdipImageGetFrameCount(bitmap, @guid, @count)
      \ImageObjects()\count = count
      If count
        \GdipGetPropertyItemSize(bitmap, #PropertyTagFrameDelay, @size)
        If size
          *mem = AllocateMemory(size)
          If *mem
            \ImageObjects()\mem = *mem
            \GdipGetPropertyItem(bitmap, #PropertyTagFrameDelay, size, *mem)
            \ImageObjects()\pos = PeekI(*mem + 8 + SizeOf(Integer))
          EndIf
        EndIf
        \GdipImageSelectActiveFrame(bitmap, @guid, 0)
        image = CreateImage(ID, width, height, 32)
        If ID = #PB_Any : ID = image : EndIf
        \ImageObjects()\ID = ID
        hdc = StartDrawing(ImageOutput(ID))
        DrawingMode(#PB_2DDrawing_AlphaChannel)
        Box(0, 0, width, height, 0)
        \GdipCreateFromHDC(hdc, @graphics)
        DrawingMode(#PB_2DDrawing_AlphaBlend)
        \GdipDrawImageI(graphics, bitmap, 0, 0)
        StopDrawing()
        \GdipDeleteGraphics(graphics)
        ProcedureReturn image
      EndIf
    EndIf
  EndWith
EndProcedure

Procedure.i GIFClass_CatchImage(*this.GIFClassTemplate, ID, *Memory, Size.l)
  Protected bitmap.i, width.l, height.l, guid.GUID, count.l
  Protected image.i, hdc.i, graphics.i, *mem
  Protected *mem2 = GlobalAlloc_(#GMEM_MOVEABLE, Size)
  Protected *ptr, Stream.IStream
  
  If *mem2
    *ptr = GlobalLock_(*mem2)
    If *ptr
      CopyMemory(*Memory, *ptr, Size)
      CreateStreamOnHGlobal_(*mem2, #True, @Stream)
      GlobalUnlock_(*mem2)
      If Stream = 0
        GlobalFree_(*mem2)
        ProcedureReturn #False
      EndIf
    EndIf
    With *this
      AddElement(\ImageObjects())
      \GdipLoadImageFromStream(stream, @bitmap)
      stream\Release()
      \ImageObjects()\mem2 = *mem2
      If bitmap
        \ImageObjects()\bitmap = bitmap
        \GdipGetImageWidth(bitmap, @width)
        \ImageObjects()\width = width
        \GdipGetImageHeight(bitmap, @height)
        \ImageObjects()\height = height
        \GdipImageGetFrameDimensionsList(bitmap, @guid, 1)
        \ImageObjects()\guid = guid
        \GdipImageGetFrameCount(bitmap, @guid, @count)
        \ImageObjects()\count = count
        If count
          \GdipGetPropertyItemSize(bitmap, #PropertyTagFrameDelay, @size)
          If size
            *mem = AllocateMemory(size)
            If *mem
              \ImageObjects()\mem = *mem
              \GdipGetPropertyItem(bitmap, #PropertyTagFrameDelay, size, *mem)
              \ImageObjects()\pos = PeekI(*mem + 8 + SizeOf(Integer))
            EndIf
          EndIf
          \GdipImageSelectActiveFrame(bitmap, @guid, 0)
          image = CreateImage(ID, width, height, 32)
          If ID = #PB_Any : ID = image : EndIf
          \ImageObjects()\ID = ID
          hdc = StartDrawing(ImageOutput(ID))
          DrawingMode(#PB_2DDrawing_AlphaChannel)
          Box(0, 0, width, height, 0)
          \GdipCreateFromHDC(hdc, @graphics)
          DrawingMode(#PB_2DDrawing_AlphaBlend)
          \GdipDrawImageI(graphics, bitmap, 0, 0)
          StopDrawing()
          \GdipDeleteGraphics(graphics)
          ProcedureReturn image
        EndIf
      EndIf      
    EndWith
  EndIf
EndProcedure

Procedure GIFClass_FreeImage(*this.GIFClassTemplate, ID = #PB_Any)
  Protected found
  With *this
    ForEach \ImageObjects()
      If ID = #PB_Any
        \GdipDisposeImage(\ImageObjects()\bitmap)
        If IsImage(\ImageObjects()\ID)
          FreeImage(\ImageObjects()\ID)
        EndIf
        If \ImageObjects()\mem
          FreeMemory(\ImageObjects()\mem)
        EndIf
        If \ImageObjects()\mem2
          GlobalFree_(\ImageObjects()\mem2)
        EndIf
        DeleteElement(\ImageObjects())        
      ElseIf \ImageObjects()\ID = ID
        found = #True
        \GdipDisposeImage(\ImageObjects()\bitmap)
        If IsImage(ID)
          FreeImage(ID)
        EndIf
        If \ImageObjects()\mem
          FreeMemory(\ImageObjects()\mem)
        EndIf
        If \ImageObjects()\mem2
          GlobalFree_(\ImageObjects()\mem2)
        EndIf
        DeleteElement(\ImageObjects())
        Break
      EndIf
    Next
    If ID <> #PB_Any And found = #False
      If IsImage(ID)
        FreeImage(ID)
      EndIf
    EndIf
  EndWith
EndProcedure

Procedure GIFClass_GetFrame(*this.GIFClassTemplate, ID, Number.l)
  Protected hdc.i, graphics, image
  
  With *this
    ForEach \ImageObjects()
      If \ImageObjects()\ID = ID
        If Number > \ImageObjects()\count - 1
          ProcedureReturn 0
        EndIf
        \GdipImageSelectActiveFrame(\ImageObjects()\bitmap, \ImageObjects()\guid, Number)
        image = CreateImage(#PB_Any, \ImageObjects()\width, \ImageObjects()\height, 32)
        hdc = StartDrawing(ImageOutput(image))
        DrawingMode(#PB_2DDrawing_AlphaChannel)
        Box(0, 0, \ImageObjects()\width, \ImageObjects()\height, 0)
        \GdipCreateFromHDC(hdc, @graphics)
        DrawingMode(#PB_2DDrawing_AlphaBlend)
        \GdipDrawImageI(graphics, \ImageObjects()\bitmap, 0, 0)
        StopDrawing()
        \GdipDeleteGraphics(graphics)
        ProcedureReturn image
      EndIf
    Next
  EndWith  
EndProcedure

Procedure GIFClass_CountFrames(*this.GIFClassTemplate, ID)
  With *this
    ForEach \ImageObjects()
      If \ImageObjects()\ID = ID
        ProcedureReturn \ImageObjects()\count
      EndIf
    Next
  EndWith
EndProcedure

Procedure GIFClass_GetDelayTime(*this.GIFClassTemplate, ID, Number = 0)
  With *this
    ForEach \ImageObjects()
      If \ImageObjects()\ID = ID
        If Number > \ImageObjects()\count - 1
          ProcedureReturn 0
        EndIf
        \GdipImageSelectActiveFrame(\ImageObjects()\bitmap, \ImageObjects()\guid, Number)
        ProcedureReturn PeekL(\ImageObjects()\pos + (Number * SizeOf(Long))) * 10
      EndIf
    Next
  EndWith
EndProcedure

Procedure GIFClass_Destroy(*this.GIFClassTemplate)
  GIFClass_FreeImage(*this)
  *this\GdiplusShutdown(*this\Token)
  CloseLibrary(*this\hDLL)
  ClearStructure(*this, GIFClassTemplate)
  FreeMemory(*this)
EndProcedure

DataSection 
  VTable_GIFClass:
    Data.i @GIFClass_LoadImage()
    Data.i @GIFClass_CatchImage()
    Data.i @GIFClass_FreeImage()
    Data.i @GIFClass_GetFrame()
    Data.i @GIFClass_CountFrames()
    Data.i @GIFClass_GetDelayTime()
    ;
    Data.i @GIFClass_Destroy()
EndDataSection 
In the next thread comes a example!
Last edited by ts-soft on Tue Mar 13, 2012 5:15 pm, edited 6 times in total.
PureBasic 5.73 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Old bugs good, new bugs bad! Updates are evil: might fix old bugs and introduce no new ones.
Image
User avatar
ts-soft
Always Here
Always Here
Posts: 5756
Joined: Thu Jun 24, 2004 2:44 pm
Location: Berlin - Germany

Re: GIFObject (windows only)

Post by ts-soft »

Code: Select all

EnableExplicit

XIncludeFile "GIFObject.pbi"

Enumeration ; images
  #imgProgress
EndEnumeration

Enumeration ; gadgets
  #gadProgress
  #gadTrack
EndEnumeration

Enumeration ; windows
  #frmMain
EndEnumeration

Define.GIFObject Gifobj = NewGIFObject()
Define count, i, width, height

If Gifobj
  Gifobj\CatchImage(#imgProgress, ?rmtogmeh_gif_start, 4504)
  width = ImageWidth(#imgProgress)
  height = ImageHeight(#imgProgress)
  
  count = Gifobj\CountFrames(#imgProgress)
  Dim frames(count - 1)
  For i = 0 To count - 1
    frames(i) = Gifobj\GetFrame(#imgProgress, i)
  Next

  OpenWindow(#frmMain, #PB_Ignore, #PB_Ignore, width + 20, height + 20, "example")
  ImageGadget(#gadProgress, 10, 10, width, height, ImageID(frames(0)))
  TrackBarGadget(#gadTrack, width + 40, 10, 20, height, 0, count -1, #PB_TrackBar_Vertical)
   Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Break
      Case #PB_Event_Gadget
        If EventGadget() = #gadTrack
          SetGadgetState(#gadProgress, ImageID(frames(GetGadgetState(#gadTrack))))
        EndIf
    EndSelect
  ForEver
  
  Gifobj\Destroy()
EndIf

DataSection
  rmtogmeh_gif_start:
    ; size : 4504 bytes
    Data.q $002F613938464947,$FFFFFF0000910079,$00000201FE000000,$5354454E0BFF2100,$03302E3245504143
    Data.q $0404F92100000001,$0000002C00FF0007,$FF02000079002F00,$9C9E011DCBA98F84,$D36F5086A38BDAB4
    Data.q $9E8917E39218E071,$9ABCA2BA7B68965A,$1FF0DAFD6C6F4D35,$69F52E0CC430843B,$3213352A238E1A4D
    Data.q $154CECF1F4503D1D,$D5B865D1EBACE3D8,$983B11685E1292DE,$126FDAA5AE66AB15,$313E15A7AF72A64E
    Data.q $10C122C1C6971807,$B8883876D6E716C8,$73C7B90798E32378,$89A2637749B8F4B5,$67570504E9752896
    Data.q $A7267A7774A8F17A,$082962A816F493B6,$2BA6697B0A18E7E4,$59A43482E8A7DA2A,$07A8A7FC7B3419C9
    Data.q $26DCFD082C83FC58,$B999FD9C969A9684,$567A085D8A3D69DB,$16CB7E2A0249F914,$EAD56EBE3BCDA595
    Data.q $1BDC1C036E4EFA3C,$6105F6CF6A219C8D,$5126316241594DB4,$170F3133091066AA,$FF5B33553071F376
    Data.q $A248AD50B3F4C10A,$573127AAA0FEF846,$6C8873D9B8C28285,$761BE5685E91CB4D,$D4D63AFA8240CCD1
    Data.q $0A72DA2F2767B118,$D53343ABA6C9E7BD,$197844270C592A15,$8A360C8E9A639DCD,$4BA374A8CCF9DCA7
    Data.q $68F639BD58C1188B,$11E78CA1FF1B3ECA,$4A94F2755DB542A4,$05D6F169BBC36756,$E5DADFB84463D577
    Data.q $D8B8ACA86E4A5BA5,$36B6A7AA900AD541,$5F536D0FEC258EFB,$DBADB249CD4E8B2A,$0BE55BF5CE573FC1
    Data.q $1515446AC1A4BAB5,$FC9B7B2298C7A4B4,$7BF34D0848C8A81A,$57557AE1E7F7D89B,$0DA8A0E659788B54
    Data.q $B2E859E935FD1E65,$57E2A6B97D3F2D59,$6BA69965AD73536F,$78D4F7167B5EA6B9,$D83EE3CF4BA08E3E
    Data.q $4EA4EF6B23EC503B,$C7C16579FC7DC71C,$DCC494B34059BBE5,$85F97B1813656565,$74CBF70190571E91
    Data.q $8721866F60F6ED95,$75521B684D4A2FDA,$5F4655E35D1FC600,$9E1A7D6057ED6C2C,$6422D2D21E53A295
    Data.q $E34C65874D78B040,$618E6086F5F96C4C,$6108D5E559A0779D,$00984C9F19123084,$2B245932031F2368
    Data.q $8736217B87989562,$17175C180A312B51,$0FA5E20C381F6476,$95A648902531DA1F,$2D9986688898D8E3
    Data.q $F835274AE3D5F0BB,$7A0F1F23985316D4,$1599A9CF0E9FE16E,$821F0E681965D28F,$7DA8844E6C779085
    Data.q $8A568CA39B5769CA,$00015A9A1E9293E7,$000200070504F921,$06000E006C00182C,$19081F8410020000
    Data.q $ED49466B99DF0FED,$04F921000287394A,$00182C0002000705,$02000006000E006B,$8CFFED19081F8411
    Data.q $EB49652B3BC1743B,$070504F921000050,$006A00182C000200,$841002000006000E,$743B8CFFED19081F
    Data.q $0002CBB54AB18851,$000200070504F921,$06000E006900182C,$CA610F8411020000,$6313A90872DF0FE1
    Data.q $F92100155BE7984D,$182C000200070504,$000006000E006800,$0FE1CA610F841102,$984D6313A90872DF
    Data.q $0504F92100155BEF,$6700182C00020007,$1102000006000E00,$72DF0FE1CA610F84,$5BEF984D6313A908
    Data.q $00070504F9210015,$0E006600182C0002,$0F84110200000600,$A90872DF0FE1CA61,$00155BEF984D6313
    Data.q $000200070504F921,$06000E006500182C,$CA610F8411020000,$6313A90872DF0FE1,$F92100148F56FC5D
    Data.q $182C000200070504,$000006000E006400,$8F8BB1006F8C1102,$FC95670B329451D4,$0504F9210015B6EE
    Data.q $6300182C00020007,$1102000006000E00,$72DF0FE1CA610F84,$7F6EFC5D6313A908,$00070504F9210014
    Data.q $0E006200182C0002,$0F84110200000600,$1D4843E30FE1CA61,$000053F756DAE909,$000200070504F921
    Data.q $06000E006100182C,$CA610F8411020000,$EB0BC50872DF0FE1,$F92100005D274ADA,$182C000200070504
    Data.q $000006000E006000,$0FE1CA016F841102,$AB4EB313A908725F,$0504F92100005F62,$5F00182C00020007
    Data.q $1102000006000E00,$725F0FE1CA016F84,$5DE5BC4D6313A908,$00070504F9210000,$0E005E00182C0002
    Data.q $6F84110200000600,$A908725F0FE1CA01,$00147F6EFC4D6313,$000200070504F921,$06000E005D00182C
    Data.q $CA016F8411020000,$6313A908725F0FE1,$F92100147F6EFC4D,$182C000200070504,$000006000E005C00
    Data.q $0FE1CA016F841102,$ABC56313A908725F,$0504F92100148F6F,$5B00182C00020007,$1102000006000E00
    Data.q $725F0FE1CA016F84,$54EFABC56313A908,$00070504F9210015,$0E005A00182C0002,$7F8C120200000600
    Data.q $4E348ADA08E8AA10,$05457AEFABA552FB,$0200070504F92100,$000E005900182C00,$016F841102000006
    Data.q $13A908725F0FE1CA,$21001554EFABC563,$2C000200070504F9,$0006000E00580018,$E1CA016F84110200
    Data.q $5DE9091D4843E30F,$04F92100005A275C,$00182C0002000705,$02000006000E0057,$5F0FE1CA016F8411
    Data.q $EF4B61EB0BC50872,$070504F92100005A,$005600182C000200,$841102000006000E,$08725F0FE1CA016F
    Data.q $005ADAAB66B313A9,$0200070504F92100,$000E005500182C00,$016F841102000006,$13A908725F0FE1CA
    Data.q $2100148967ABC563,$2C000200070504F9,$0006000E00540018,$E1CA016F84110200,$C56313A908725F0F
    Data.q $04F921001554EFAB,$00182C0002000705,$02000006000E0053,$5F0FE1CA016F8411,$EFABC56313A90872
    Data.q $070504F921001554,$005200182C000200,$841102000006000E,$68438D0FEAB0117F,$005A4B5C6268F825
    Data.q $0200070504F92100,$000E005100182C00,$117F841102000006,$F82568438D0FEAB0,$2100005A4B5C6268
    Data.q $2C000200070504F9,$0006000E00500018,$7D9A018F8C110200,$5D692755539C0CB0,$04F92100005A6F5C
    Data.q $00182C0002000705,$02000006000E004F,$8D0FEAB0117F8411,$4B5C6268F8256843,$070504F92100005A
    Data.q $004E00182C000200,$840F02000006000E,$2B42210FEAB0117F,$21001669CB693745,$2C000200070504F9
    Data.q $0006000E004D0018,$EAB0117F840F0200,$CB6B47DA08438D0F,$070504F921001515,$004C00182C000200
    Data.q $841102000006000E,$68438D0FEAB0117F,$00535A9462B38825,$0200070504F92100,$000E004B00182C00
    Data.q $117F841102000006,$F82568438D0FEAB0,$21000053CF0C6D68,$2C000200070504F9,$0006000E004A0018
    Data.q $EAB0117F84100200,$6D68F82568438D0F,$0504F9210002A2BA,$4900182C00020007,$1002000006000E00
    Data.q $438D0FEAB0117F84,$02A2BA6D68F82568,$0200070504F92100,$000E004800182C00,$117F841002000006
    Data.q $F82568438D0FEAB0,$F9210002A2BA6D68,$182C000200070504,$000006000E004700,$0FEAB0117F841002
    Data.q $BA6D68F82568438D,$070504F9210002A2,$004600182C000200,$8C1102000006000E,$539C0CB07D9A018F
    Data.q $005A575695292755,$0200070504F92100,$000E004500182C00,$117F841002000006,$F82568438D0FEAB0
    Data.q $F9210002A2BA6D68,$182C000200070504,$000006000E004400,$0FEAB0117F840F02,$14CB6937452B4221
    Data.q $00070504F9210015,$0E004300182C0002,$7F840F0200000600,$DA08438D0FEAB011,$F921001515CB6B47
    Data.q $182C000200070504,$000006000E004200,$0FEAB0117F841102,$9462B3882568438D,$0504F9210000535A
    Data.q $4100182C00020007,$1102000006000E00,$438D0FEAB0117F84,$53CF0C6D68F82568,$00070504F9210000
    Data.q $0E004000182C0002,$7F84100200000600,$2568438D0FEAB011,$210002A2BA6D68F8,$2C000200070504F9
    Data.q $0006000E003F0018,$EAB0117F84100200,$6D68F82568438D0F,$0504F9210002A2BA,$3E00182C00020007
    Data.q $1002000006000E00,$438D0FEAB0117F84,$02A2BA6D68F82568,$0200070504F92100,$000E003D00182C00
    Data.q $117F841002000006,$F82568438D0FEAB0,$F9210002A2BA6D68,$182C000200070504,$000006000E003C00
    Data.q $B07D9A018F8C1102,$5695292755539C0C,$0504F92100005A57,$3A00182C00020007,$1102000007000E00
    Data.q $42210FEAB0117F84,$6AE794CB6937452B,$00070504F9210014,$0E003900182C0002,$7F840F0200000600
    Data.q $DA08438D0FEAB011,$F921001515CB6B47,$182C000200070504,$000006000E003800,$0FEAB0117F841102
    Data.q $9462B3882568438D,$0504F9210000535A,$3700182C00020007,$1102000006000E00,$438D0FEAB0117F84
    Data.q $53CF0C6D68F82568,$00070504F9210000,$0E003600182C0002,$7F84100200000600,$2568438D0FEAB011
    Data.q $210002A2BA6D68F8,$2C000200070504F9,$0006000E00350018,$EAB0117F84100200,$6D68F82568438D0F
    Data.q $0504F9210002A2BA,$3400182C00020007,$1002000006000E00,$438D0FEAB0117F84,$02A2BA6D68F82568
    Data.q $0200070504F92100,$000E003300182C00,$117F841002000006,$F82568438D0FEAB0,$F9210002A2BA6D68
    Data.q $182C000200070504,$000006000E003200,$B07D9A018F8C1102,$5695292755539C0C,$0504F92100005A57
    Data.q $3100182C00020007,$1002000006000E00,$438D0FEAB0117F84,$02A2BA6D68F82568,$0200070504F92100
    Data.q $000E003000182C00,$117F840F02000006,$37452B42210FEAB0,$04F921001514CB69,$00182C0002000705
    Data.q $02000006000E002F,$8D0FEAB0117F840F,$1515CB6B47DA0843,$0200070504F92100,$000E002E00182C00
    Data.q $117F841102000006,$882568438D0FEAB0,$210000535A9462B3,$2C000200070504F9,$0006000E002D0018
    Data.q $EAB0117F84110200,$6D68F82568438D0F,$04F921000053CF0C,$00182C0002000705,$02000006000E002C
    Data.q $8D0FEAB0117F8410,$A2BA6D68F8256843,$00070504F9210002,$0E002B00182C0002,$7F84100200000600
    Data.q $2568438D0FEAB011,$210002A2BA6D68F8,$2C000200070504F9,$0006000E002A0018,$EAB0117F84100200
    Data.q $6D68F82568438D0F,$0504F9210002A2BA,$2900182C00020007,$1002000006000E00,$438D0FEAB0117F84
    Data.q $02A2BA6D68F82568,$0200070504F92100,$000E002800182C00,$018F8C1102000006,$2755539C0CB07D9A
    Data.q $2100005A57569529,$2C000200070504F9,$0006000E00270018,$EAB0117F84100200,$6D68F82568438D0F
    Data.q $0504F9210002A2BA,$2600182C00020007,$1002000006000E00,$43E30FE1CA016F84,$02A2BA6569091D48
    Data.q $0200070504F92100,$000E002500182C00,$016F841002000006,$0BC508725F0FE1CA,$F9210002A2DA65AB
    Data.q $182C000200070504,$000006000E002400,$0FE1CA016F841102,$B796B313A908725F,$0504F92100005462
    Data.q $2300182C00020007,$1102000006000E00,$725F0FE1CA016F84,$79656CB56313A908,$00070504F9210014
    Data.q $0E002200182C0002,$6F84110200000600,$A908725F0FE1CA01,$00147E6FABC56313,$000200070504F921
    Data.q $06000E002100182C,$CA016F8411020000,$6313A908725F0FE1,$F921001554EFABC5,$182C000200070504
    Data.q $000006000E002000,$0FE1CA016F841102,$ABC56313A908725F,$0504F921001554EF,$1F00182C00020007
    Data.q $1102000006000E00,$725F0FE1CA016F84,$54EFABC56313A908,$00070504F9210015,$0E001E00182C0002
    Data.q $7F8C120200000600,$4E348ADA08E8AA10,$05457AEFABA552FB,$0200070504F92100,$000E001D00182C00
    Data.q $016F841102000006,$13A908725F0FE1CA,$21001554EFABC563,$2C000200070504F9,$0006000E001C0018
    Data.q $E1CA016F84110200,$5DE9091D4843E30F,$04F92100005A275C,$00182C0002000705,$02000006000E001B
    Data.q $5F0FE1CA016F8411,$EF4B61EB0BC50872,$070504F92100005A,$001A00182C000200,$841102000006000E
    Data.q $08725F0FE1CA016F,$005ADAAB66B313A9,$0200070504F92100,$000E001900182C00,$016F841102000006
    Data.q $13A908725F0FE1CA,$2100148967ABC563,$2C000200070504F9,$0006000E00180018,$E1CA610F84110200
    Data.q $C56313A90872DF0F,$04F921001555EFA9,$00182C0002000705,$02000006000E0017,$DF0FE1CA610F8411
    Data.q $EFA9C56313A90872,$070504F921001555,$001600182C000200,$841102000006000E,$0872DF0FE1CA610F
    Data.q $1555EFA9C56313A9,$0200070504F92100,$000E001500182C00,$610F841102000006,$13A90872DF0FE1CA
    Data.q $21001555EFA9C563,$2C000200070504F9,$0006000E00140018,$8BB1006F8C110200,$95670B329451D48F
    Data.q $04F92100155E6EFC,$00182C0002000705,$02000006000E0013,$DF0FE1CA610F8411,$6EFC5D6313A90872
    Data.q $070504F92100147F,$001200182C000200,$841102000006000E,$4843E30FE1CA610F,$0053F756DAE9091D
    Data.q $0200070504F92100,$000E001100182C00,$610F841102000006,$0BC50872DF0FE1CA,$2100005D274ADAEB
    Data.q $2C000200070504F9,$0006000E00100018,$E1CA610F84110200,$5EB313A90872DF0F,$04F92100005F62A9
    Data.q $00182C0002000705,$02000006000E000F,$8CFFED19081F8411,$A70CDCAB0851743B,$070504F92100005A
    Data.q $000E00182C000200,$841102000006000E,$743B8CFFED19081F,$005ADB49DCAB0851,$0200070504F92100
    Data.q $000E000D00182C00,$081F841102000006,$0851743B8CFFED19,$2100005ADB49DCAB,$2C000200070504F9
    Data.q $0006000E000C0018,$ED19081F84110200,$DCAB0851743B8CFF,$04F92100005ADB49,$00182C0002000705
    Data.q $02000006000E000B,$8CFFED19081F8411,$A75B95AB0851743B,$070504F92100005A,$000A00182C000200
    Data.q $8C1102000006000E,$74531A8FE7B1090F,$149D56CC55E8E826,$0200070504F92100,$000E000900182C00
    Data.q $018F841102000006,$46C1294316AFEDC1,$3B000054769151D7
  rmtogmeh_gif_end:
EndDataSection
Have Fun!

// edit:
Small Update:
History wrote:; 1.1
; added optional backcolor to LoadImage() and CatchImage()
Better example
PureBasic 5.73 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Old bugs good, new bugs bad! Updates are evil: might fix old bugs and introduce no new ones.
Image
User avatar
electrochrisso
Addict
Addict
Posts: 989
Joined: Mon May 14, 2007 2:13 am
Location: Darling River

Re: GIFObject (windows only)

Post by electrochrisso »

Thanks, this will come in handy ts. :)
PureBasic! Purely the best 8)
User avatar
ts-soft
Always Here
Always Here
Posts: 5756
Joined: Thu Jun 24, 2004 2:44 pm
Location: Berlin - Germany

Re: GIFObject (windows only)

Post by ts-soft »

You are welcome :D

Here a small example to save all frames of a gif to png:

Code: Select all

EnableExplicit

UsePNGImageEncoder()
XIncludeFile "GIFObject.pbi"

Procedure GifFrames2Png(GifFile.s, OutputDir.s)
  Protected.GIFObject obj = NewGIFObject()
  Protected.i img, buffer, count, i, png
  Protected.s File = GetFilePart(GifFile)
  File = Left(File, Len(File) - Len(GetExtensionPart(File)) - 1)
  
  If Right(OutputDir, 1) <> "\" : OutputDir + "\" : EndIf
  CompilerIf #PB_Compiler_Unicode
    buffer = AllocateMemory(StringByteLength(OutputDir, #PB_Ascii) + 1)
    If buffer
      PokeS(buffer, OutputDir, -1, #PB_Ascii)
      MakeSureDirectoryPathExists_(buffer)
      FreeMemory(buffer)
    EndIf
  CompilerElse
    MakeSureDirectoryPathExists_(@OutputDir)
  CompilerEndIf

  If obj
    img = obj\LoadImage(#PB_Any, GifFile)
    If img
      count = obj\CountFrames(img) - 1
      For i = 0 To count
        png = obj\GetFrame(img, i)
        SaveImage(png, OutputDir + File + Str(i + 1) + ".png", #PB_ImagePlugin_PNG)
        FreeImage(png)
      Next
      obj\FreeImage(img)
    EndIf
    obj\Destroy()
  EndIf
EndProcedure

Define.s File = OpenFileRequester("Select GIF-File", "", "GIF-File (*.gif)|*.gif", 0)
If File
  Define.s Dir = PathRequester("Select Outputdir", "")
  If Dir
    GifFrames2Png(File, Dir)
    RunProgram(Dir)
  EndIf
EndIf
PureBasic 5.73 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Old bugs good, new bugs bad! Updates are evil: might fix old bugs and introduce no new ones.
Image
TO7
User
User
Posts: 29
Joined: Wed Dec 03, 2008 9:06 am

Re: GIFObject (windows only)

Post by TO7 »

Great work !!
Is it possible to copy/paste the animated gif with your method ???
Sorry but, Google translate is my friend :-(
juror
Enthusiast
Enthusiast
Posts: 228
Joined: Mon Jul 09, 2007 4:47 pm
Location: Courthouse

Re: GIFObject (windows only)

Post by juror »

Another wonderful contribution.

Thanks
User avatar
ts-soft
Always Here
Always Here
Posts: 5756
Joined: Thu Jun 24, 2004 2:44 pm
Location: Berlin - Germany

Re: GIFObject (windows only)

Post by ts-soft »

you are welcome :D

@TO7
The clipboardfunctions in PB supports only one image (frame) to copy and paste.
PureBasic 5.73 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Old bugs good, new bugs bad! Updates are evil: might fix old bugs and introduce no new ones.
Image
TO7
User
User
Posts: 29
Joined: Wed Dec 03, 2008 9:06 am

Re: GIFObject (windows only)

Post by TO7 »

What a shame.
Maybe there could be a solution to store in memory all the images thanks to your code, and after try to recreate the GIF ???
Sorry but, Google translate is my friend :-(
User avatar
ts-soft
Always Here
Always Here
Posts: 5756
Joined: Thu Jun 24, 2004 2:44 pm
Location: Berlin - Germany

Re: GIFObject (windows only)

Post by ts-soft »

I have test some graficprograms and the can't copy and paste a animated gif, so i think, the windows-clipboard
doesn't support this.

I have no idea how save a new animated gif.
PureBasic 5.73 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Old bugs good, new bugs bad! Updates are evil: might fix old bugs and introduce no new ones.
Image
TO7
User
User
Posts: 29
Joined: Wed Dec 03, 2008 9:06 am

Re: GIFObject (windows only)

Post by TO7 »

Ok thanks for your answer
it is true that it would be more able to manage GIF
So again congratulation for your work and obvioulsly the sharing
Sorry but, Google translate is my friend :-(
User avatar
ts-soft
Always Here
Always Here
Posts: 5756
Joined: Thu Jun 24, 2004 2:44 pm
Location: Berlin - Germany

Re: GIFObject (windows only)

Post by ts-soft »

Update:
History wrote:; 1.2, Mrz 13, 2012
; - removed backcolor
; + added support transparency
And a new old example:

Code: Select all

EnableExplicit

XIncludeFile "GIFObject.pbi"

Define.GIFObject obj = NewGIFObject()
Define count, i, delay
If obj
  
  obj\CatchImage(0, ?Loading2_gif_start, 7998)
  count = obj\CountFrames(0) - 1
  delay = obj\GetDelayTime(0)
  Dim frames(count)
  For i = 0 To count
    frames(i) = obj\GetFrame(0, i)
  Next
  obj\FreeImage(0) 
  obj\Destroy()  
  
  OpenWindow(0, #PB_Ignore, #PB_Ignore, ImageWidth(frames(0)) + 20, ImageHeight(frames(0)) + 20, "")
  ImageGadget(0, 10, 10, ImageWidth(frames(0)), ImageHeight(frames(0)), ImageID(frames(0)))
  AddWindowTimer(0, 1, delay)
  i = 0
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Break
        
      Case #PB_Event_Timer
        Select EventTimer()
          Case 1
            SetGadgetState(0, ImageID(frames(i)))
            i + 1
            If i > count : i = 0 : EndIf
        EndSelect
    EndSelect
  ForEver
EndIf


DataSection
  Loading2_gif_start:
    ; size : 7998 bytes
    Data.q $00A0613938464947,$7C7E7C0000F20014,$8A8CACAAACECEAEC,$F4848684FCFEFC8C,$04F9218C8E8CF4F2
    Data.q $0BFF210004000709,$455041435354454E,$0000000103302E32,$1400A0000000002C,$FEDCBA48FE030000
    Data.q $CDEB38BDAB49CA30,$9E69648E2860FFBB,$2C70BEEB6CAEAA68,$364860871C219BCF,$0213D22EDCB7F3AE
    Data.q $95320C47F148437D,$812350752963E4CE,$EC90020C0000A001,$43F05EB96B0DFBB6,$1D83B564CFAF2E8C
    Data.q $C741BCB6F6D38F37,$00845D020E6EEFBF,$8B8A888685831002,$82928D8F8785890F,$9A84900D958A8C94
    Data.q $0E8EA00B9E5D9C0C,$0FA95CA710036370,$B368B1AC77AA5EAB,$B8A6B9B5B7B0B2AE,$0CC2AF0DBFBBBDAD
    Data.q $C985CAC8B1058A5A,$BDCE84CCCDCFCBB7,$D55DD3D4D1D2D6D0,$5C5C890AA263DD9B,$DFA5E598E1E404E2
    Data.q $9FEDEF93EAEBE663,$73F8E9E7ECF3F0E0,$CFF3E205087F75C7,$B81188190342BF8F,$3C02160B84C16147
    Data.q $08AD1380C54ED0C8,$1D8D94C9E0343018,$92C6A3D1C1B034AB,$4B6504090C901922,$26450984C65C4D96
    Data.q $B3C9DCEA73389B8D,$4A1D0A83409FCFA7,$0000121AA3D1A8B4,$001300070904F921,$1400A0000000002C
    Data.q $8486840402048400,$AAACDCDADC4C4A4C,$F46C6A6C343234AC,$B4B2B45C5E5CF4F2,$E6E48C8E8C141614
    Data.q $548C8A8C3C3E3CE4,$343634ACAEAC5452,$62640000007C7E7C,$EC1C1A1CB4B6B464,$000000000000ECEA
    Data.q $0000000000000000,$0000000000000000,$648E24E0FE050000,$BEEB6CAEAA689E69,$AE78DF6D74CF2C70
    Data.q $62214315D3EF7CEF,$00506DA4C88EFCA8,$8EAD4A728B8F9F38,$BF5818A016A78A06,$900E9C2DAB735E60
    Data.q $776CD5A1507082C5,$1D7872E9BD4EDD7A,$7B807C7EE7DB8F75,$2509646409268367,$27520E018F120E17
    Data.q $9095269391128F8D,$9C8E949D979B2892,$989F24A5A0A38C99,$0823AF96A2ACA79E,$0496900425085B89
    Data.q $BC8FBABDBB97B928,$C412C2C5C001BE27,$D1B8CCCACDC8C626,$115AB50D25C3BFC1,$E08FDE280E96A725
    Data.q $DDE8E626E412E227,$EBF0EFE3EDE1DF96,$4EDAD9F4EDF2EA24,$0A5D8EF790B1F5DC,$05850681BFDCB008
    Data.q $AD0985C1DD308820,$007DAD04B0A87441,$8DB498F025C8916E,$C9193228EB059712,$422942EA387D238F
    Data.q $B91C7A5C13962FE5,$3042308812CBE692,$8A7CE74F88D52F85,$BF3CA2B7934A1A00,$3D56D36974409D09
    Data.q $131996A631352AA1,$88A9604070380807,$EBD5CAD1BABB5BAC,$568B3586C765B004,$3B65C0F96EB21DAC
    Data.q $DDE8C25D5A9604F7,$0AF80C011909834B,$100502820202EC1E,$90C7E3B1B8CC24EC,$10DF32B94C9E4B23
    Data.q $1D00070904F92100,$00A0000000002C00,$8684040204840014,$2CDCDADC4C4A4C84,$6C6A6CACAAAC2C2E
    Data.q $3A3C141614F4F2F4,$B45C5E5C8C8E8C3C,$E4E6E40C0E0CB4B2,$0604FCFAFC343634,$345452548C8A8C04
    Data.q $7C7E7CACAEAC3432,$92943C3E3C1C1A1C,$ECB4B6B464626494,$000000000000ECEA,$8E2760FE05000000
    Data.q $EB6CAEAA689E6964,$78DF6D74CF2C70BE,$818DA5FFEF7CEFAE,$0472A4C8806C30F2,$1A72064C112260C9
    Data.q $7AECB384ECD80050,$0694714B166B8E6F,$2CDFBAF83118F188,$3A624750259D4108,$07051914543A7096
    Data.q $83817F8482807E2A,$8D288B86888A8529,$2491969294898C87,$639D0C2319597A19,$1216A816121C250C
    Data.q $AE26ACAAA9A6275C,$A7ADB5A8B328ABA9,$B724BDB8BBA5B1B4,$00A21825C4BFB6B0,$05250B58CA0B2309
    Data.q $27D6D4D32805A8AF,$D2DEA9DC26DAAFD8,$E4D7D5E024E216D4,$11CA1126E5E823E6,$A801A7250FCFC923
    Data.q $59FCAAFBF92812FA,$FB057F89E03037D0,$0E7E412050982C1D,$7889621081342A01,$891EE0067BD01AA2
    Data.q $6192281C02050F5F,$A93C8E17B2219280,$4896492F7DCA24D2,$9DA2CF670763CCA0,$D53D70089D8FA57B
    Data.q $43A2BBE78DBA0AA5,$A55003B3EA337E8F,$8893EA24E3B292E3,$164B9862F82ACF50,$35F61582095BAEC2
    Data.q $0B408ACD625708D8,$231ED81DB55718AC,$F144734D0113A721,$E005090480A07131,$80BF213037FBE88A
    Data.q $C56170F89C207705,$6512592C42330D8C,$048660218EF20EB8,$025D1E88E06C4E9A,$A339DC14097A8282
    Data.q $66CB63A4CE808B39,$CEB40B0A05016151,$83C0DFEFB7BBCDDE,$21000847BC4E1F0B,$2C001400070904F9
    Data.q $001400A000000000,$4484868404020485,$2C2E2CD4D2D44442,$6264ACAAACECEAEC,$F43C3A3C14121464
    Data.q $5452548C8E8CF4F6,$7A7CB4B2B4E4E6E4,$34DCDADC0C0E0C7C,$0000001C1A1C3436,$4A4C8C8A8C040604
    Data.q $F4343234D4D6D44C,$6C6A6CACAEACF4F2,$FAFC3C3E3C141614,$B45C5E5C949294FC,$0000007C7E7CB4B6
    Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
    Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
    Data.q $2C48708A40FE0600,$3A6CC972A4C88F1A,$AF5AAD4A74A8D09F,$55BF7AEDCB76ACD8,$74E8C088E1232711
    Data.q $454A82407E598236,$CF7E8019231CFA00,$7A08204C80FFA828,$047A7B790D481608,$111D8B8B1D11450D
    Data.q $0200920214979681,$8A43768C9B041F46,$200B1B1A470400A1,$ABB0AEACAA4A1A06,$B7B2B4B6B149AFAD
    Data.q $1646C0B5B8B3B948,$43207AA6204487A6,$231605450E7BCA0E,$D7D6D3477E1623D5,$D5E048D8D6DB46D9
    Data.q $E5E8D2DEE1D4DAE2,$08A18447DDE444EA,$7ACF214309CF1E45,$024019AADC064521,$341DB90523C0E030
    Data.q $3C47017FC2DAD092,$291388C12050D224,$1567854869567844,$00B508A127E3DC86,$CB650236231E50D5
    Data.q $E6447984A64E486B,$53A98CDE5F2695CB,$24711F3E974FE125,$9400FC91041951F2,$533C9683C02EC224
    Data.q $4EAAD4E5B5100D3E,$A956EA9596B4D6A1,$A6DE645AF582595A,$1F614A5B3C1244A3,$A428CD39B9147F3F
    Data.q $60A5D01F5C8BDCE1,$9606FB7BA95E2F57,$248A0F5303C8D7EB,$D61B7E33884CC653,$276FB9B26E778D59
    Data.q $CCBBF3759C965E9F,$675B6437765B3194,$41409495A83E14D2,$4A021EB808A64F91,$30B0580C1A232A19
    Data.q $EEEF7CBDDE6E952C,$0787B922F137FB8D,$0245E5F1961CAE2F,$8BDA8348B64083CC,$EFA623AF448A3D1A
    Data.q $826460B3700C067F,$11C023DF611FB305,$2191086CA7F0F7F8,$CFDFEBF3F1688843,$A0280600FFFFBFBF
    Data.q $0904F9210000411A,$0000002C00140007,$020485001400A000,$D444424484868404,$ECEAEC2C2E2CD4D2
    Data.q $1214646264ACAAAC,$8CF4F6F43C3A3C14,$E4E6E45452548C8E,$0E0C7C7A7CB4B2B4,$1C343634DCDADC0C
    Data.q $0406040000001C1A,$D6D44C4A4C8C8A8C,$ACF4F2F4343234D4,$1416146C6A6CACAE,$9294FCFAFC3C3E3C
    Data.q $7CB4B6B45C5E5C94,$0000000000007C7E,$0000000000000000,$0000000000000000,$0000000000000000
    Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
    Data.q $0000000000000000,$FE06000000000000,$C88F1A2C48708A40,$A8D09F3A6CC972A4,$76ACD8AF5AAD4A74
    Data.q $9388A2E0BF7AEDCB,$C11ADAB4E1447091,$7D0022A541203F2C,$D61467CF600C918E,$16087B0820498180
    Data.q $450D047B7C7A0D48,$9782111D8C8C1D11,$491A06200B1B1A58,$A2041F4602009302,$470400A88B43778D
    Data.q $499F9DB14A9E9C9A,$BABCB4B69BB8B3B5,$C723160547B7B948,$4488AD16467F1623,$7CD20E43207BAD20
    Data.q $DB46CBC9C8C5450E,$C6C4E2C7E048CAC8,$E444EAE5E8DADEE1,$854706C7DC0648DD,$214309D71E4508A8
    Data.q $BD9E8F322884F6D7,$D91092341DB90523,$B0D2243C46F48242,$700B18871388BC9E,$1A59AE112233E38C
    Data.q $4A02FC21855AE152,$472D243263B1B228,$359647E5D3298478,$91E2E6731224DE6B,$A640F00B227F2F9E
    Data.q $0D29290A46D29091,$5A1CF2560080CA02,$CCCAAF558ECD0034,$32BF5BAED1AB142A,$F0148CD522162AA3
    Data.q $14A935C1244A7289,$B4511B91481C0600,$562F9678BDDE1A14,$DC782BB6001F7ABC,$A0F5683C8AE6A2C6
    Data.q $B80B5884D4693448,$3BC68996C4D85D61,$BF319A6D90DDD977,$3444D1691BF9BC3B,$6E0F91580160B018
    Data.q $022A14FAF0502527,$6A88CAF56ED887B4,$D60C3D6EAF7DAED6,$BC75A7137E45E0F0,$07C004ABCEE070B8
    Data.q $8238F9BB0691EAC1,$0CD5E04C529F2924,$720B04CA4166F018,$F0F0A3C047BECA43,$1086432210D94FE3
    Data.q $FFBFBFCFDFEBE4D9,$045380E0280600FF,$00070904F9210001,$A0000000002C0014,$8404020485001400
    Data.q $D4D2D44442448486,$AAACECEAEC2C2E2C,$3C141214646264AC,$8C8E8CF4F6F43C3A,$B2B4E4E6E4545254
    Data.q $DC0C0E0C7C7A7CB4,$1C1A1C343634DCDA,$8A8C040604000000,$34D4D6D44C4A4C8C,$ACAEACF4F2F43432
    Data.q $3E3C1416146C6A6C,$5C949294FCFAFC3C,$7C7E7CB4B6B45C5E,$0000000000000000,$0000000000000000
    Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
    Data.q $0000000000000000,$0000000000000000,$0000000000000000,$8A40FE0600000000,$72A4C88F1A2C4870
    Data.q $4A74A8D09F3A6CC9,$EDCB76ACD8AF5AAD,$70919388AAE0BF7A,$3F2CC11ADAB4E144,$918E7D0022A54120
    Data.q $8180D61467CF600C,$0D4816087B082049,$1D11450D047B7C7A,$1A489782111D8C8C,$9C9A4A1A06200B1B
    Data.q $1F4602009302499E,$00AC8B43778DA604,$A3B5499F9DA14704,$BF99BABCA0B69BB8,$1623C723160547B7
    Data.q $B11647CAC8C6C47F,$0E43207BB1204488,$CBC9C8C5450E7CD6,$CFC7CDDEE2CEDF46,$0648E1E8E3EAE0CC
    Data.q $46F523F3F106C7E0,$8609DB1E4508AC85,$F379114427B6D884,$7BC1E14E084119F2,$44C871164430890E
    Data.q $9A71B638058C487A,$CDB08919931C8D11,$47F90C2ADB0A90D2,$8C663A2390114250,$126D349A4BE3D219
    Data.q $1F9ECEDE1A132981,$A247267310780591,$841AD28224964601,$A91429DCB8010495,$15AA2D1E7D5698D1
    Data.q $38991E935BA0D72B,$33EECC0FB210A2B4,$0C29536D824894F5,$AAF6B2B822506824,$47BCDF6F7680A59A
    Data.q $76E11D6F0A1B7EF7,$359AA4507AC41E44,$2BCE70DC11B4426C,$B9921E5E89832262,$1CD46B30E6CB3BB0
    Data.q $A3002C160306889A,$4EDE1F22B0F55A85,$6A04562AF600A04A,$A9D391966B1DB90F,$D77008BC2D6EFF57
    Data.q $A0397C1E1EBF88A0,$3780D2358820FB00,$A98933F12490471F,$99602CDE03019AFB,$7808F7D6486E8160
    Data.q $64421B29FBBDBDE4,$F3F8FBFBDBA210C8,$00FFFFBFBFCFDFEB,$0904F9210004110E,$0000002C00140007
    Data.q $020485001400A000,$D444424484868404,$ECEAEC2C2E2CD4D2,$1214646264ACAAAC,$8CF4F6F43C3A3C14
    Data.q $E4E6E45452548C8E,$0E0C7C7A7CB4B2B4,$1C343634DCDADC0C,$0406040000001C1A,$D6D44C4A4C8C8A8C
    Data.q $ACF4F2F4343234D4,$1416146C6A6CACAE,$9294FCFAFC3C3E3C,$7CB4B6B45C5E5C94,$0000000000007C7E
    Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
    Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$FE06000000000000
    Data.q $C88F1A2C48708A40,$A8D09F3A6CC972A4,$76ACD8AF5AAD4A74,$C45130E0BF7AEDCB,$8D3D7AB1223848C9
    Data.q $801152A0901F9660,$0A33EFC00648C73E,$087C08204682816C,$0D047C7D7B0D4816,$83111D8D8D1D1145
    Data.q $4A1A06200B1B1A5F,$489F9D9BA09E9C9A,$AA041F4602009402,$470400B08C43788E,$A3B948A7A2A4A6A1
    Data.q $C723160546BDBF49,$CBC9C8C547801623,$89B51647CAC8C6C4,$DB0E43207CB52044,$D2E3D0D3CD450E7D
    Data.q $E9E448CFE8CCD4C7,$F34806C7CE0644E6,$8645FACEF847F6F4,$90C12E00F11410B0,$990FC22884F8E010
    Data.q $7117943C46F4863F,$700B1890F58690E2,$D3263B1B2336238C,$5DC09191C9638238,$130421855C01521A
    Data.q $279A47E4F212284A,$C8E2A771E934926D,$6492507805D0449B,$246A44968C01A247,$998041B72D224A82
    Data.q $AD1686C8A0CCC010,$76415BA3D7299596,$870D2145ABB10B0D,$AA8059C1F690A59E,$84052AEE004912A6
    Data.q $DA99CF7B34521709,$236EEB75F9F77CBE,$18A75BB696D17551,$B6D1141EB5079131,$6B9C37096F909BAD
    Data.q $7C898EAD33486F1C,$0CB8C5E8C859DC3E,$C3D66A97CC00B058,$BA07C8BADD78688C,$81160AFDB0281294
    Data.q $769B25BAD77A43DD,$FCAE2ED757B322EC,$00094531B0E49138,$79F7840D23D24210,$8BC3D295C0526914
    Data.q $16099882CE003019,$E248008F9DA48F00,$0C864421B287CBE3,$FFBFBFCFDFCDC421,$046180E0280600FF
    Data.q $00070904F9210001,$A0000000002C0014,$8404020485001400,$D4D2D44442448486,$AAACECEAEC2C2E2C
    Data.q $3C141214646264AC,$8C8E8CF4F6F43C3A,$B2B4E4E6E4545254,$DC0C0E0C7C7A7CB4,$1C1A1C343634DCDA
    Data.q $8A8C040604000000,$34D4D6D44C4A4C8C,$ACAEACF4F2F43432,$3E3C1416146C6A6C,$5C949294FCFAFC3C
    Data.q $7C7E7CB4B6B45C5E,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
    Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
    Data.q $0000000000000000,$8A40FE0600000000,$72A4C88F1A2C4870,$4A74A8D09F3A6CC9,$EDCB76ACD8AF5AAD
    Data.q $48C9C45530E0BF7A,$96608D3D7AB12238,$C73E801152A0901F,$816C0A33EFC00648,$4816087C08204682
    Data.q $11450D047C7D7B0D,$1A4F83111D8D8D1D,$9C9A4A1A06200B1B,$A6A1499F9D9BA09E,$041F460200940249
    Data.q $0400B38C43788EAD,$BC48BDA5A8A3A947,$1623C723160547A7,$C8C548CAC8C6C480,$1644D4CED146CBC9
    Data.q $43207CB8204489B8,$CFC7D6450E7DDF0E,$44D8E9CDD5EAD2CC,$F6F4F34806C7D206,$FCC8FC46FAD2F847
    Data.q $E40F11410B343111,$22884F8E41090C12,$3CA04237A3DDEB00,$238C700B1887168A,$721243263B1B2337
    Data.q $121C7E4526924784,$1855C81521A5DC81,$1E4F252284A1B082,$2B94CADF677239C9,$8ECA24C0F00B21B3
    Data.q $51297499351C0345,$020DF989125C91A3,$150A450A6E0086CD,$27DD2AB93EA6D0E4,$FC4ECD002146688D
    Data.q $B6096707DA42967A,$1814AD3901244AB2,$6DA45AED91787C36,$8DB9DDB4F68DB6DF,$10DE389C21130D45
    Data.q $88A0F5C03C8ED3C6,$E1B86B8C84E16FB7,$02163B0AEBC8D330,$00582C060D113159,$B355AD61EAF52BB6
    Data.q $EC1F226C365A8236,$045C2C48A0A04A52,$D76D174DF5910F7A,$6DF90A0D7ED48BB3,$48D6308410025C4C
    Data.q $F0549A451E8DE203,$B3800C0662EFF425,$EF6123C2058266A0,$6CA1F0F7F8120023,$F3F1730843219108
    Data.q $00FFFFBFBFCFDFEB,$04F9210010451806,$00002C0014000709,$0485001400A00000,$4442448486840402
    Data.q $EAEC2C2E2CD4D2D4,$14646264ACAAACEC,$F4F6F43C3A3C1412,$E6E45452548C8E8C,$0C7C7A7CB4B2B4E4
    Data.q $343634DCDADC0C0E,$06040000001C1A1C,$D44C4A4C8C8A8C04,$F4F2F4343234D4D6,$16146C6A6CACAEAC
    Data.q $94FCFAFC3C3E3C14,$B4B6B45C5E5C9492,$00000000007C7E7C,$0000000000000000,$0000000000000000
    Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
    Data.q $0000000000000000,$0000000000000000,$0600000000000000,$8F1A2C48708A40FE,$D09F3A6CC972A4C8
    Data.q $ACD8AF5AAD4A74A8,$58B0E0BF7AEDCB76,$CD78D11C2464E228,$A950480FCB304686,$FBE80324639F4008
    Data.q $08204383826D0519,$7D7E7C0D4816087D,$1D8E8E1D11450D04,$1A06200B1B1A8211,$9F9D9BA09E9C9A4A
    Data.q $0247A7A2A4A6A149,$8FB0041F46020095,$A9470400B68D4379,$23160547C0A5A8A3,$CAC8C6C4811623C7
    Data.q $CED146CBC9C8C548,$BB1646CFC7D645D4,$0E43207DBB20448A,$44D8DBCDD90E7EE3,$F206C7D20648D3DA
    Data.q $46FAF4F347F623F4,$E04C880115FCD2FC,$2E80F11410B64390,$881884FAE81090C1,$0B1890F58210E0CF
    Data.q $8638236EB8238C70,$36458FC8E471A64C,$112349E544792476,$21855D01521A61D0,$E263D269484A230C
    Data.q $20F00B225B3E9149,$990D1C03458EC964,$25429142A3512974,$41C735214CDC7312,$9EEC224EC01119C0
    Data.q $0FA1C52A74CA8D2A,$B6052D5448210A2C,$422D570B75A1EF69,$0295F74024895B58,$D48B95D4891388C4
    Data.q $9A2C6DAADCA7B46D,$63C716EFC6D95D78,$141EBB07909DD8F6,$371173909CAE3711,$A5C661C8596C4638
    Data.q $5F30C2C160306885,$91B5FADD82B75DAC,$C87B6D8EDF67B5D5,$6B4228281295BD87,$B5EB8D6A43E18117
    Data.q $174909BADE28373B,$281A46B184210012,$A75784A512490477,$39059C406032FF8B,$011FBB692E402C13
    Data.q $884364DF9FCBC691,$BFBFCFA3A842190C,$F480E0280600FFFF,$070904F921000105,$000000002C001400
    Data.q $04020485001400A0,$D2D4444244848684,$ACECEAEC2C2E2CD4,$141214646264ACAA,$8E8CF4F6F43C3A3C
    Data.q $B4E4E6E45452548C,$0C0E0C7C7A7CB4B2,$1A1C343634DCDADC,$8C0406040000001C,$D4D6D44C4A4C8C8A
    Data.q $AEACF4F2F4343234,$3C1416146C6A6CAC,$949294FCFAFC3C3E,$7E7CB4B6B45C5E5C,$000000000000007C
    Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
    Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$40FE060000000000
    Data.q $A4C88F1A2C48708A,$74A8D09F3A6CC972,$CB76ACD8AF5AAD4A,$E22A58B0E0BF7AED,$4686CD78D11C2464
    Data.q $4008A950480FCB30,$0519FBE80324639F,$087D08204383826D,$0D047D7E7C0D4816,$57111D8E8E1D1145
    Data.q $9A4A1A06200B1B1A,$A1499F9D9BA09E9C,$48A3A948A7A2A4A6,$B3041F4602009502,$470400B98D43798F
    Data.q $23C723160546ADAF,$C4CBC9C8C5478116,$45D0D3CD48CAC8C6,$43D8DBD2CCD4C7D6,$207DBE20448ABE16
    Data.q $CFDED90E7EE70E43,$23F4F206C7CE0648,$CEFC46FAF4F347F6,$8211204C880115FC,$0788A085CA1C8EF5
    Data.q $C427D76084860976,$8C70088DC3067C40,$864C6E38C6233923,$FC8E4C4792476424,$1A572392C7A54458
    Data.q $2AEC0A90D30EC089,$98CBDF425148790C,$CC2360F00B22532F,$297498DD1C03458E,$B43905429142A351
    Data.q $B0839E70449AA4A9,$553DBC449F002293,$9E08428CD119CFBA,$DC0FB5052D1557BD,$5C5F42AE366B95C2
    Data.q $8A44C29607602489,$B729ECDB75D60F16,$1DF87C4B75E34C68,$444C6D170A437063,$62283D7C0F22E2B2
    Data.q $706E28EB213A5CEE,$582C060D10F2186C,$504661EAF52AE580,$B6D8ED35CC1D66AB,$BD87C91AFD911761
    Data.q $8117CB7228281295,$B67B86039D7043E1,$81085804A3D0426E,$4492411DCA0691AC,$180CC1E0E8CDA189
    Data.q $4B900B04CF016710,$E3F0F0A44047EECA,$EE1086432210D937,$FFFFBFBFCFDFEBE4,$F921001046080600
    Data.q $002C001400070904,$85001400A0000000,$4244848684040204,$EC2C2E2CD4D2D444,$646264ACAAACECEA
    Data.q $F6F43C3A3C141214,$E45452548C8E8CF4,$7C7A7CB4B2B4E4E6,$3634DCDADC0C0E0C,$040000001C1A1C34
    Data.q $4C4A4C8C8A8C0406,$F2F4343234D4D6D4,$146C6A6CACAEACF4,$FCFAFC3C3E3C1416,$B6B45C5E5C949294
    Data.q $000000007C7E7CB4,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
    Data.q $0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000,$0000000000000000
    Data.q $0000000000000000,$1A2C48708A40FE06,$9F3A6CC972A4C88F,$D8AF5AAD4A74A8D0,$B0E0BF7AEDCB76AC
    Data.q $78D11C2464E22C58,$50480FCB304686CD,$E80324639F4008A9,$204383826D0519FB,$7E7C0D4816087D08
    Data.q $8E8E1D11450D047D,$06200B1B1A47111D,$9D9BA09E9C9A4A1A,$48A7A2A4A6A1499F,$950247B0A5A8A3A9
    Data.q $798FB6041F460200,$1605460400BC8D43,$C8C547811623C723,$CD48CAC8C6C4CBC9,$D2CCD4C7D645D0D3
    Data.q $C11647CFDA44D8DB,$0E43207DC120448A,$06C7CE06450E7EEA,$FACEF847F6F4F348,$4237A3C9FCC8FC46
    Data.q $283411EEF5801120,$4BBC3C45042F10E4,$188A213EBBC42430,$3B1B2339E38C700B,$2692478472124326
    Data.q $224AE53298D47E45,$844893296B924F25,$8861577854869877,$607C7658128BC4E2,$30068F33A2D0E512
    Data.q $82914DA4D2E8926A,$8752AAD329C01644,$10754EC8539754DC,$AAB3A0F410045E7C,$83EA90AB4400850C
    Data.q $AE143B6DBED614B4,$2B68711AE767BB5C,$78B052CAEF04912C,$8B45B9448DB86331,$8318DD71E21B38AA
    Data.q $AB92C3E36B0CD21B,$4507B041E42CBE3D,$0DC5DDC42763A9D2,$A6566160B0183446,$353AED66BD5BADD5
    Data.q $7B6D96D35445DAEC,$5C007C87BCDBA837,$381182BA22828129,$4908BE023A97643E,$1A46A78421C0130F
    Data.q $5D87A51249047738,$059C406032FF8BA7,$1FBB692E602C133F,$4364DF9FCBC69101,$BFCFA3C442190C88
    Data.q $80E0280600FFFFBF,$0904F92100010450,$0000002C000E0007,$020484001400A000,$44D4D2D484868404
    Data.q $2C2E2CECEAEC4442,$0E0CF4F6F4ACAAAC,$3CE4E6E48C8E8C0C,$7C7A7CDCDADC3C3A,$8A8C040604000000
    Data.q $34F4F2F4D4D6D48C,$141214FCFAFC3432,$7E7C3C3E3C949294,$000000000000007C,$0000000000000000
    Data.q $FE05000000000000,$AA689E69648E23A0,$74CF2C70BEEB6CAE,$FFEF7CEFAE78DF6D,$8C851A2C4870A0C0
    Data.q $0B031E3C19628AC8,$A000152CC6AD48E5,$A0A030DA26294102,$3AA2418B090C4940,$CF729D9AB46DD7A7
    Data.q $F5F3AF0E59BA6FE3,$035A6203277D7627,$2553056186051426,$2804101893181004,$9694992797959491
    Data.q $A0939E269C9F9298,$A19BAA90A4A7A29D,$245D5A8C1025A89A,$011806261661B516,$18BFC0BE2806C093
    Data.q $C7C7C4C8C1C527C3,$CAD4C6CEC2CFBDC9,$B55925DAD6D8CDD3,$AE260B5ABA172515,$27E99AEA95E828A7
    Data.q $F2F4F0ECEEE7B7EB,$E40C22F8EEEDF7B3,$0981F00078901800,$80308142FC1ABF63,$A2785C39290C00C2
    Data.q $A894562EC188C3E1,$1C82331E8A4720F1,$C9A60411C09C8FF1,$C512B461D1369021,$9A4266224978361E
    Data.q $08A71326ACBA6C23,$C4D3BA14DE79339D,$A138002C492B4637,$4A8C655AB2872894,$A0369F55565413C2
    Data.q $72B55DAC56EAC23A,$1D60B283AC75E115,$BC722E44A0D5D034,$0320506100819C4C,$DED0175BC5CAED74
    Data.q $70071BEDCC4B7EBC,$D4B0A09F0C7EC261,$002AE914250382D0,$437C0225CBE58AD9,$60C886458284F100
    Data.q $C6092580805A4D1E,$B0D7E932A0905801,$DBEDB6BB4D9ECB63,$F921000108B373B8,$002C000B00070904
    Data.q $84001400A0000000,$D2D4848684040204,$F4444244ECEAECD4,$3C3E3CACAAACF4F6,$7A7CDCDADC8C8E8C
    Data.q $8C1412140000007C,$F4F2F4D4D6D48C8A,$00007C7E7CFCFAFC,$0000000000000000,$0000000000000000
    Data.q $0000000000000000,$0000000000000000,$0000000000000000,$9E69648E22E0FE05,$2C70BEEB6CAEAA68
    Data.q $7CEFAE78DF6D74CF,$1A2C4870A0C0FFEF,$11066CC90384AB8F,$080C3D50D180000C,$6BA9B96AC561E184
    Data.q $596FE251831DDB76,$44FBF5E6DB92F61D,$0911A0D40401DA90,$807E7C7A030D2244,$8A83817F7D7B2782
    Data.q $878B84888C858D86,$9095982596918926,$06265577770D269D,$A9A8A6280611A77F,$B2AAA8AC27AEADAB
    Data.q $25B8ADAFB7A5B5B0,$22C17FBF24BDA7B3,$A48A94270C52A251,$28D1CC25CE7E8EA0,$D2DACBD8D0D680D4
    Data.q $D585D9E023DED724,$01ADCF0977C80925,$F4F0DCEEA8EFEDD9,$F9F6F7ECF3A7F1F2,$65274BA046FA7FF8
    Data.q $262828020A802F9D,$4C38170C85429582,$50FAB68AC3D770B8,$3D1F8DC5A211388C,$10063218F0C8BC66
    Data.q $C2254928D1F12E73,$112249842A569B96,$C239A02A65354D4B,$E114F2753D9C4CE6,$202A8F42A2502773
    Data.q $9CE60D06818D00A8,$CF51AA09AA5502B8,$57AD554BB59A7D4C,$B2892C75812D5AB9,$01C2022B4D8AC960
    Data.q $05974B993AD80764,$B759480418C70084,$4C1DFC040216DFAF,$5E2B1388C3E1B0B8
    Data.b $CC,$D8,$70,$08,$00,$3B
  Loading2_gif_end:
EndDataSection
PureBasic 5.73 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Old bugs good, new bugs bad! Updates are evil: might fix old bugs and introduce no new ones.
Image
User avatar
Demivec
Addict
Addict
Posts: 4260
Joined: Mon Jul 25, 2005 3:51 pm
Location: Utah, USA

Re: GIFObject (windows only)

Post by Demivec »

Your second posting, of the code, is missing the code. :)
ts-soft wrote:[GIFObject.pbi]

Code: Select all

EnableExplicit

XIncludeFile "GIFObject.pbi

...
"
User avatar
ts-soft
Always Here
Always Here
Posts: 5756
Joined: Thu Jun 24, 2004 2:44 pm
Location: Berlin - Germany

Re: GIFObject (windows only)

Post by ts-soft »

:oops: false clipboard :wink:

fixed, thanks for the info.
PureBasic 5.73 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Old bugs good, new bugs bad! Updates are evil: might fix old bugs and introduce no new ones.
Image
Post Reply