Canvas_CustomImageCursor

Got an idea for enhancing PureBasic? New command(s) you'd like to see?
mestnyi
Addict
Addict
Posts: 1000
Joined: Mon Nov 25, 2013 6:41 am

Canvas_CustomImageCursor

Post by mestnyi »

Code: Select all

#PB_Canvas_CustomImageCursor = 14

Procedure CanvasCustomCursor(ImageID, X = 0, Y = 0)
  If ImageID
    CompilerSelect #PB_Compiler_OS
      CompilerCase #PB_OS_Windows
        Protected hCursor, Cursor.ICONINFO
        Cursor\fIcon = 0
        Cursor\xHotspot = X 
        Cursor\yHotspot = Y 
        Cursor\hbmMask = ImageID
        Cursor\hbmColor = ImageID
        hCursor = CreateIconIndirect_(Cursor)
        ProcedureReturn hCursor
        
      CompilerCase #PB_OS_Linux
        Protected *Cursor.GdkCursor
        *Cursor = gdk_cursor_new_from_pixbuf_(gdk_display_get_default_(), ImageID, X, Y)
        ProcedureReturn *Cursor
        
    CompilerEndSelect
  EndIf
EndProcedure  

ProcedureDLL u_SetGadgetAttribute(Gadget, Attribute, Value)
  Protected Result
  
  If IsGadget(Gadget) 
    If Attribute = #PB_Canvas_CustomImageCursor
      SetGadgetAttribute(Gadget, #PB_Canvas_CustomImageCursor, CanvasCustomCursor(Value)) 
    Else
      SetGadgetAttribute(Gadget, #PB_Canvas_CustomCursor, Value) 
    EndIf
  EndIf
  
  ProcedureReturn Result
EndProcedure

Macro SetGadgetAttribute(Gadget, Attribute, Value) : u_SetGadgetAttribute(Gadget, Attribute, Value) : EndMacro