;
; ------------------------------------------------------------
;
;   PureBasic - ImagePlugin example file
;
;    (c) Fantaisie Software
;
; ------------------------------------------------------------
;

; Enable all the decoders than PureBasic actually supports
;
UseJPEGImageDecoder()
UseTGAImageDecoder()
UsePNGImageDecoder()
UseTIFFImageDecoder()

; Enable all the encoders than PureBasic actually supports
;
UseJPEGImageEncoder()
UsePNGImageEncoder()


If OpenWindow(0, 0, 0, 250, 130, "PureBasic - Image Converter", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

  CreateToolBar(0, WindowID(0))
    ToolBarImageButton(0, LoadImage(0, #PB_Compiler_Home + "examples/sources/Data/ToolBar/Open.png"))
    ToolBarImageButton(1, LoadImage(0, #PB_Compiler_Home + "examples/sources/Data/ToolBar/Save.png"))
    DisableToolBarButton(0, 1, 1)    ; disable the save button
    
  ImageGadget(0, 0, 28, WindowWidth(0), WindowHeight(0), 0, #PB_Image_Border)
  
  Repeat
    Event = WaitWindowEvent()
    
    If Event = #PB_Event_Menu  ; ToolBar are acting as menu
    
      Select EventMenu()
      
        Case 0  ; Open
        
          Filename$ = OpenFileRequester("Choose a picture", "", "All Images Formats|*.bmp;*.jpg;*.png;*.tif;*.tga", 0)
          If Filename$
          
            If LoadImage(0, Filename$)
              SetGadgetState(0, ImageID(0))  ; change the picture in the gadget
              DisableToolBarButton(0, 1, 0)    ; enable the save button
              ResizeWindow(0, #PB_Ignore, #PB_Ignore, ImageWidth(0)+4, ImageHeight(0)+34)
            EndIf
          
          EndIf
        
        Case 1  ; Save
          
          Filename$ = SaveFileRequester("Save a picture", Left(Filename$, Len(Filename$)-Len(GetExtensionPart(Filename$))-1), "BMP Format|*.bmp|JPEG Format|*.jpg|PNG Format|*.png", 0)
          If Filename$
          
            Select SelectedFilePattern()
            
              Case 0  ; BMP
                ImageFormat = #PB_ImagePlugin_BMP
                Extension$  = "bmp"

              Case 1  ; JPEG
                ImageFormat = #PB_ImagePlugin_JPEG
                Extension$  = "jpg"
                
              Case 2  ; PNG
                ImageFormat = #PB_ImagePlugin_PNG
                Extension$  = "png"

            EndSelect
            
            If LCase(GetExtensionPart(Filename$)) <> Extension$
              Filename$ + "." + Extension$
            EndIf
            
            If SaveImage(0, Filename$, ImageFormat)
              MessageRequester("Information", "Image saved successfully", 0)
            EndIf
          
          EndIf
      
      EndSelect
    
    EndIf
    
  Until Event = #PB_Event_CloseWindow  ; If the user has pressed on the close button
  
EndIf

End   ; All is automatically freed by PureBasic