| Function CreateMenus:Int() Local FileMenu:TGadget=CreateMenu("File",200,MyWindow) CreateMenu("Exit",210,FileMenu,KEY_F4,MODIFIER_OPTION) CreateMenu("Open",220,FileMenu) ToolMenu:TGadget=CreateMenu("AnimTool",300,MyWindow) CreateMenu("Toggle Animation",310,ToolMenu) CreateMenu("Clear Animation",320,ToolMenu) CreateMenu("Cut",330,ToolMenu) PasteMenuAfter:TGadget=CreateMenu("Paste After",340,ToolMenu) PasteMenuBefore:TGadget=CreateMenu("Before",350,ToolMenu) CreateMenu("Save Animation",360,ToolMenu) CreateMenu("Load Animation",370,ToolMenu) DisableMenu(PasteMenuAfter) DisableMenu(PasteMenuBefore) UpdateWindowMenu MyWindow End Function |
| Function Process_MenuActionEvent:Int() Select EventData() Case 210 'Exit or ALT-F4 End Case 220 'File Open LoadCanvasImage("") Case 310 'Toggle Animation AnimFlag= True ~ AnimFlag Case 320 ;AnimClearAll Case 330 ;AnimListPtr=AnimCut() Case 340 ;AnimPaste(0) Case 350 ;AnimPaste(1) Case 360 ;SaveAnimation() Case 370 ;LoadAnimation() End Select End Function |
| Function SaveAnimation:Int() Local AnimCount:Int=CountList(AnimList) If AnimCount=0 Notify "Nothing to Save" Return -1 EndIf Local Tmp:TPixmap=CreatePixmap:TPixMap(AnimSize*AnimCount,AnimSize,PixmapFormat(PixMap1)) Local i:Int=0 For Local p:TPixmap=EachIn AnimList For Local jx:Int=0 To AnimSize-1 For Local jy:Int=0 To AnimSize-1 Local argb:Int=ReadPixel(P,jx,jy) WritePixel(Tmp,jx+i*(AnimSize),jy,argb) Next Next i=i+1 Next Local file:String=RequestFile("File to Save","png",True) If file>"" SavePixmapPNG(Tmp,file) End Function |
| Function LoadAnimation:Int() Local file:String=RequestFile("Load An Animation Strip","Image Files:png,jpg,bmp") If file>"" Then Local PixImg:TPixmap=LoadPixmap(file) If PixImg=Null Then Return -1 ClearList(AnimList) AnimListPtr=Null xsize=PixmapHeight(PixImg) ysize=xsize AnimSize=xsize Local maxframes:Int=PixmapWidth(PixImg)/ysize-1 For Local i:Int=0 To MaxFrames Local Tmp:TPixmap=CreatePixmap(xsize,ysize,PixmapFormat(PixMap1)) For Local jx:Int=0 To AnimSize-1 For Local jy:Int=0 To AnimSize-1 Local argb:Int=ReadPixel(PixImg,jx+i*(AnimSize),jy) WritePixel(Tmp,jx,jy,argb) Next Next AnimListPtr:TLink=ListAddLast(AnimList,Tmp) Next EndIf RedrawGadget(Canvas3) End Function |
| SuperStrict Graphics 640,480,0,0 Local bck:timage=LoadImage("1945.bmp") Local file:String="whatever.png" '<----replace with the filename you have saved earlier Local img:timage=LoadImage(file) Local maxframes:Int=ImageWidth(img)/ImageHeight(img)-1 Img=LoadAnimImage(file,ImageHeight(img),ImageHeight(img),0,maxframes) Local frame:Int=0 While Not AppTerminate() Cls DrawImage bck,0,0 DrawImage Img, 10,10, frame Flip frame=frame+1 If frame>=maxframes Then frame=0 Delay(100) Wend |