| Global AnimList:TList=CreateList() Global AnimSize:Int=0 '---------Current size of the animation strip Global AnimListPtr:TLink=Null |
| Function Process_MouseDownEvent:Int() Select EventSource() Case Canvas1 Select EventData() Case MOUSE_LEFT If CursorResize=False 'We are not normal mode CursorResize=True 'user click left mouse xsize_old=xsize ysize_old=ysize mx1_Old=mx1 my1_Old=my1 MoveMouse(mx1+xsize,my1+ysize) Else 'We are in change size mode, so back out CursorResize=False xsize=mx1a-mx1_Old ysize=my1a-my1_Old If xsize>MaxCursorSize Then xsize=MaxCursorSize If xsize>MaxCursorSize Then xsize=MaxCursorSize MoveMouse(mx1_Old,my1_Old) EndIf Case MOUSE_RIGHT CopyPixUnderCursorToAnimStrip() End Select 'eventdata() RedrawGadget(Canvas1) End Select 'eventsource() End Function |
| Function CopyPixUnderCursorToAnimStrip:Int() CursorResize=False mx1_Old=mx1; my1_Old=my1 Local x:Int=Mx1 Local y:Int=My1 Local mask:Int If xsize>MaxCursorSize Then xsize=MaxCursorSize If ysize>MaxCursorSize Then ysize=MaxCursorSize If xsize>AnimSize AnimSize=xsize If ysize>AnimSize AnimSize=ysize Local Tmp:TPixmap=CreatePixmap(AnimSize,AnimSize,PixmapFormat(PixMap1)) 'set all backgrounf to black For Local i:Int=0 To AnimSize-1 For Local j:Int=0 To AnimSize-1 WritePixel(Tmp,i,j,0) Next Next Local YOffset:Int=(AnimSize-ysize)/2 Local XOffset:Int=(AnimSize-xsize)/2 mask=ReadPixel(Pix,x,y) For Local i:Int=0 To xsize-1 For Local j:Int=0 To ysize-1 '-----make sure we are within bounds If i+x<PixmapWidth(Pix) And j+y<PixmapHeight(Pix) Local rgb:Int = ReadPixel(Pix,i+x,j+y) WritePixel(Tmp,i+XOffset,j+YOffset,rgb) EndIf Next Next Local r:Int, g:Int, b:Int, a:Int GetRGB(mask,a,r,g,b) Local Anim:TPixmap=MaskPixmap(Tmp,r,g,b) If AnimListPtr=Null Then AnimListPtr:TLink=ListAddLast(AnimList, Anim:TPixmap) Else AnimListPtr:TLink=AnimList.InsertAfterLink(Anim:TPixmap, AnimListPtr:TLink) EndIf MoveMouse(mx1_Old,my1_Old) RedrawGadget(Canvas3) End Function |
| Function Process_GadgetPaintEvent:Int() Select EventSource() Case Canvas1 SetGraphics CanvasGraphics (Canvas1) Cls DrawPixmap Pix,0,0 If MouseInCanvas1 Then DrawCursor(mx1,my1,xsize, ysize) If CursorResize=True SetColor 255,0,0 DrawCursor(mx1_old,my1_old,xsize_old, ysize_old) SetColor 0,0,0 EndIf RedrawGadget(Canvas2) EndIf Flip Case Canvas2 SetGraphics CanvasGraphics(Canvas2) Cls If MouseInCanvas1=True Then If CursorResize=False Then DrawPixUnderCursor(Canvas2,Pix,mx1,my1) If CursorResize=True Then DrawPixUnderCursor(Canvas2,Pix,mx1_Old,my1_Old) EndIf Flip Case Canvas3 SetGraphics CanvasGraphics(Canvas3) Cls If AnimListPtr<>Null Then Local j:Int=0 For Local p:TPixMap=EachIn AnimList Local YOffset:Int=(AnimSize-PixmapHeight(p))/2 Local XOffset:Int=(AnimSize-PixmapWidth(p))/2 DrawPixmap p,j*AnimSize+XOffset,YOffset DrawCursor(j*AnimSize,0,AnimSize,AnimSize) j=j+1 Next EndIf Flip End Select 'EventSource() End Function |
![]() |