Page 1 of 1

PB Image Viewer

Posted: Sun Jun 16, 2013 1:12 am
by RASHAD
Hi everybody
It is not a big deal but one of the forum member ask for it
Consider it as a start and if you have more to add please do

Code: Select all

UsePNGImageDecoder()
UsePNGImageEncoder()
UseJPEGImageDecoder()
UseJPEGImageEncoder()
UseJPEG2000ImageEncoder()
UseJPEG2000ImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()

Global Dim Selected$(0)

LoadFont(0,"WingDings",16)

If OpenWindow(0,0,0,1024,768,"Image Viewer", #PB_Window_SystemMenu| #PB_Window_MaximizeGadget| #PB_Window_MinimizeGadget| #PB_Window_SizeGadget| #PB_Window_ScreenCentered)
  ExplorerTreeGadget(0, 10, 10, 200, 0, "*.*")
  SetGadgetColor(0, #PB_Gadget_BackColor, $FEE9D3) 
  ExplorerListGadget(1, 220, 10, 0, 0, "C:\*.bmp;*.jpg;*.png;*.tga;*.tif",#PB_Explorer_NoFolders| #PB_Explorer_NoParentFolder| #PB_Explorer_AutoSort| #PB_Explorer_MultiSelect)
  SetGadgetColor(1, #PB_Gadget_BackColor, $E2FEFD)
  SetGadgetColor(1, #PB_Gadget_FrontColor, $EA0801)
  RemoveGadgetColumn(1,1) 
  RemoveGadgetColumn(1,1)
  RemoveGadgetColumn(1,1)
  SetGadgetAttribute(1, #PB_Explorer_DisplayMode, #PB_Explorer_LargeIcon)
  
  ContainerGadget(2,10,10,0,0,#PB_Container_Flat)
    ButtonImageGadget(3,10,10,0,0,0)
    SetWindowTheme_(GadgetID(3), @null.w, @null.w)
  CloseGadgetList()
  
  DisableGadget(2, 1)
  
  ContainerGadget(4,0,0,200,22,#PB_Container_BorderLess)  
    ButtonGadget(5,0,0,60,22,Chr($D7))
    SetGadgetFont(5,FontID(0))
    ButtonGadget(6,70,0,60,22,Chr($D9))
    SetGadgetFont(6,FontID(0))
    ButtonGadget(7,140,0,60,22,Chr($D8))
    SetGadgetFont(7,FontID(0))
  CloseGadgetList()  
    
  HideGadget(2,1)
  HideGadget(4,1)
  
  CreatePopupMenu(0)
    MenuItem(1, "Preview")
    MenuItem(3, "Save as")
    MenuItem(4, "Quit")  
  
Repeat 
    Select WaitWindowEvent() 
      Case #PB_Event_CloseWindow 
        Quit = 1
        
      Case #PB_Event_SizeWindow             
            ResizeGadget(0,#PB_Ignore, #PB_Ignore, #PB_Ignore,WindowHeight(0,#PB_Window_InnerCoordinate)-20)
            ResizeGadget(1,#PB_Ignore, #PB_Ignore, WindowWidth(0,#PB_Window_InnerCoordinate)-230, WindowHeight(0,#PB_Window_InnerCoordinate)-20)
            ResizeGadget(2,#PB_Ignore, #PB_Ignore, WindowWidth(0,#PB_Window_InnerCoordinate)-20, WindowHeight(0,#PB_Window_InnerCoordinate)-60)
            ResizeGadget(3,#PB_Ignore, #PB_Ignore, GadgetWidth(2)-20,GadgetHeight(2)-20)
            ResizeGadget(4,WindowWidth(0,#PB_Window_InnerCoordinate)/2 - 105, WindowHeight(0,#PB_Window_InnerCoordinate)-35, #PB_Ignore,#PB_Ignore)
            
      Case #PB_Event_Menu
          Select EventMenu()
             Case 1
                 HideGadget(0,1)
                 HideGadget(1,1)
                 HideGadget(2,0)
                 HideGadget(4,0)
                 LoadImage(0,Selected$(0))
                 SetGadgetAttribute(3, #PB_Button_Image, ImageID(0))
                 Loaded = 0                      
                       
          EndSelect
         
      Case #PB_Event_Gadget 
        Select EventGadget() 
          Case 0             
              SetGadgetText(1,GetGadgetText(0))
              
          Case 1
              Select EventType()
                   Case #PB_EventType_LeftClick
                        k = 0
                        ReDim Selected$(0)
                        For i = 0 To CountGadgetItems(1)
                           If GetGadgetItemState(1,i) = #PB_Explorer_File|#PB_Explorer_Selected                    
                              Selected$(k) = GetGadgetText(0) + GetGadgetItemText(1,i)
                              ;Debug Selected$(k)
                              k +1
                              ReDim Selected$(k)
                           EndIf
                        Next
                        k - 1
                   
                   Case #PB_EventType_RightClick
                         DisplayPopupMenu(0,WindowID(0))

              EndSelect
              
          Case 5
               Loaded - 1
               If Loaded < 0
                  loaded = 0
               EndIf
               LoadImage(0,Selected$(Loaded))
               SetGadgetAttribute(3, #PB_Button_Image, ImageID(0))
                     
          Case 6
               HideGadget(0,0)
               HideGadget(1,0)
               HideGadget(2,1)
               HideGadget(4,1)
          
                 
          Case 7
               Loaded + 1
               If Loaded > k
                  loaded = k
               EndIf
               LoadImage(0,Selected$(Loaded))
               SetGadgetAttribute(3, #PB_Button_Image, ImageID(0))
               
        EndSelect 
    EndSelect 
Until Quit = 1 
EndIf 
Edit :Modified again

Re: PB Image Viewer

Posted: Sun Jun 16, 2013 8:25 am
by davido
Hi RASHAD:

Very nice. Thanks for sharing. :D

Instructive demonstration of Explorer Gadgets.

Re: PB Image Viewer

Posted: Sun Jun 16, 2013 12:25 pm
by RASHAD
Thanks davido
Previous post updated

Re: PB Image Viewer

Posted: Tue Jun 18, 2013 8:42 am
by Kwai chang caine
Works great, except the two buttons left and right for change pictures, but surely you know that because it's just a beginning like you say :D
Thanks RASHAD for sharing 8)

Re: PB Image Viewer

Posted: Tue Jun 18, 2013 12:19 pm
by RASHAD
Hi KCC
You must select more than one image using Mouse + Ctrl

Re: PB Image Viewer

Posted: Wed Jun 19, 2013 8:05 pm
by Kwai chang caine
Aaaah yes !!! what a mule i am :oops:
That works better now :mrgreen:
Thanks again RASHAD for the sharing

Re: PB Image Viewer

Posted: Thu Jun 20, 2013 9:33 am
by RASHAD
Ver. 2.0
Use Mouse Wheel to Zoom-In Zoom-Out

Code: Select all

UsePNGImageDecoder()
UsePNGImageEncoder()
UseJPEGImageDecoder()
UseJPEGImageEncoder()
UseJPEG2000ImageEncoder()
UseJPEG2000ImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()

Global Dim Selected$(0),Scale.f
Scale = 1

LoadFont(0,"WingDings",16)

If OpenWindow(0,0,0,1024,768,"Image Viewer",#PB_Window_SystemMenu| #PB_Window_MaximizeGadget| #PB_Window_MinimizeGadget| #PB_Window_SizeGadget| #PB_Window_ScreenCentered)
  SetWindowColor(0,$9F9F9F)
  ExplorerTreeGadget(0, 10, 10, 200, 0, "*.*")
  SetGadgetColor(0, #PB_Gadget_BackColor, $FEE9D3) 
  ExplorerListGadget(1, 220, 10, 0, 0, "C:\*.bmp;*.jpg;*.png;*.tga;*.tif",#PB_Explorer_NoFolders| #PB_Explorer_NoParentFolder| #PB_Explorer_AutoSort| #PB_Explorer_MultiSelect)
  SetGadgetColor(1, #PB_Gadget_BackColor, $E2FEFD)
  SetGadgetColor(1, #PB_Gadget_FrontColor, $EA0801)
  RemoveGadgetColumn(1,1) 
  RemoveGadgetColumn(1,1)
  RemoveGadgetColumn(1,1)
  SetGadgetAttribute(1, #PB_Explorer_DisplayMode, #PB_Explorer_LargeIcon)
  
  CanvasGadget(2,10,10,0,0,#PB_Canvas_Border|#PB_Canvas_Keyboard)
 
  ContainerGadget(4,0,0,200,22,#PB_Container_BorderLess)
    SetGadgetColor(4,#PB_Gadget_BackColor,$9F9F9F)  
    ButtonGadget(5,0,0,60,22,Chr($D7))
    SetGadgetFont(5,FontID(0))
    ButtonGadget(6,70,0,60,22,Chr($D9))
    SetGadgetFont(6,FontID(0))
    ButtonGadget(7,140,0,60,22,Chr($D8))
    SetGadgetFont(7,FontID(0))
  CloseGadgetList()  
    
  HideGadget(2,1)
  HideGadget(4,1)
  
  CreatePopupMenu(0)
    MenuItem(1, "Preview")
    MenuItem(3, "Save as")
    MenuItem(4, "Quit")  
  
Repeat 
    Select WaitWindowEvent() 
      Case #PB_Event_CloseWindow 
        Quit = 1
        
      Case #PB_Event_SizeWindow             
            ResizeGadget(0,#PB_Ignore, #PB_Ignore, #PB_Ignore,WindowHeight(0,#PB_Window_InnerCoordinate)-20)
            ResizeGadget(1,#PB_Ignore, #PB_Ignore, WindowWidth(0,#PB_Window_InnerCoordinate)-230, WindowHeight(0,#PB_Window_InnerCoordinate)-20)
            ResizeGadget(2,#PB_Ignore, #PB_Ignore, WindowWidth(0,#PB_Window_InnerCoordinate)-20, WindowHeight(0,#PB_Window_InnerCoordinate)-60)
            ResizeGadget(4,WindowWidth(0,#PB_Window_InnerCoordinate)/2 - 105, WindowHeight(0,#PB_Window_InnerCoordinate)-35, #PB_Ignore,#PB_Ignore)
            If IsImage(1)
               StartDrawing(CanvasOutput(2))
               Box(0,0,GadgetWidth(2),GadgetHeight(2),$9F9F9F)
                DrawingMode(#PB_2DDrawing_AlphaBlend)
                   DrawImage(ImageID(1),(GadgetWidth(2)-ImageWidth(1))/2,(GadgetHeight(2)-ImageHeight(1))/2) 
               StopDrawing()
            ElseIf IsImage(0)
               StartDrawing(CanvasOutput(2))
               Box(0,0,GadgetWidth(2),GadgetHeight(2),$9F9F9F)
                DrawingMode(#PB_2DDrawing_AlphaBlend)
                   DrawImage(ImageID(0),(GadgetWidth(2)-ImageWidth(0))/2,(GadgetHeight(2)-ImageHeight(0))/2) 
               StopDrawing()
               
            EndIf
            
      Case #PB_Event_Menu
          Select EventMenu()
             Case 1
                 HideGadget(0,1)
                 HideGadget(1,1)
                 HideGadget(2,0)
                 HideGadget(4,0)
                 LoadImage(0,Selected$(0))
                 StartDrawing(CanvasOutput(2))
                  Box(0,0,GadgetWidth(2),GadgetHeight(2),$9F9F9F)
                     DrawImage(ImageID(0),(GadgetWidth(2)-ImageWidth(0))/2,(GadgetHeight(2)-ImageHeight(0))/2) 
                  StopDrawing()
                 Loaded = 0                      
                       
          EndSelect
         
      Case #PB_Event_Gadget 
        Select EventGadget() 
          Case 0             
              SetGadgetText(1,GetGadgetText(0))
              
          Case 1
              Select EventType()
                   Case #PB_EventType_LeftClick
                        k = 0
                        ReDim Selected$(0)
                        For i = 0 To CountGadgetItems(1)
                           If GetGadgetItemState(1,i) = #PB_Explorer_File|#PB_Explorer_Selected                    
                              Selected$(k) = GetGadgetText(0) + GetGadgetItemText(1,i)
                              ;Debug Selected$(k)
                              k +1
                              ReDim Selected$(k)
                           EndIf
                        Next
                        k - 1
                   
                   Case #PB_EventType_RightClick
                         DisplayPopupMenu(0,WindowID(0))

              EndSelect
              
          Case 2
               Select EventType()
                  Case #PB_EventType_LeftClick

                       
                  Case #PB_EventType_MouseEnter
                       SetActiveGadget(2)
                       
                       
                  Case #PB_EventType_MouseWheel
                       Delta = GetGadgetAttribute(2, #PB_Canvas_WheelDelta)
                       If Delta = 1 And IsImage(0)
                          Scale = Scale + 0.1
                          CopyImage(0,1)
                          ResizeImage(1,ImageWidth(1)*Scale,ImageHeight(1)*Scale)
                       ElseIf Delta = -1 And IsImage(0)
                          Scale = Scale - 0.1
                          CopyImage(0,1)
                          ResizeImage(1,ImageWidth(1)*Scale,ImageHeight(1)*Scale)
                       EndIf
                       StartDrawing(CanvasOutput(2))
                       Box(0,0,GadgetWidth(2),GadgetHeight(2),$9F9F9F)
                           DrawImage(ImageID(1),(GadgetWidth(2)-ImageWidth(1))/2,(GadgetHeight(2)-ImageHeight(1))/2) 
                       StopDrawing()

                        
               EndSelect

              
          Case 5
               Loaded - 1
               If Loaded < 0
                  loaded = 0
                  Scale = 1
               EndIf
               LoadImage(0,Selected$(Loaded))
                  StartDrawing(CanvasOutput(2))
                  Box(0,0,GadgetWidth(2),GadgetHeight(2),$9F9F9F)
                     DrawImage(ImageID(0),(GadgetWidth(2)-ImageWidth(0))/2,(GadgetHeight(2)-ImageHeight(0))/2) 
                  StopDrawing()
                     
          Case 6
               HideGadget(0,0)
               HideGadget(1,0)
               HideGadget(2,1)
               HideGadget(4,1)
          
                 
          Case 7
               Loaded + 1
               If Loaded > k
                  loaded = k
                  Scale = 1
               EndIf
               LoadImage(0,Selected$(Loaded))
                StartDrawing(CanvasOutput(2))
                Box(0,0,GadgetWidth(2),GadgetHeight(2),$9F9F9F)
                   DrawImage(ImageID(0),(GadgetWidth(2)-ImageWidth(0))/2,(GadgetHeight(2)-ImageHeight(0))/2) 
                StopDrawing()
               
        EndSelect 
    EndSelect 
Until Quit = 1 
EndIf 

Re: PB Image Viewer

Posted: Thu Jun 20, 2013 11:12 am
by davido
Hi RASHAD,

A nice improvement. :D

May I suggest a minor addition: A check to Scale to prevent it becoming less than 0.1?

Re: PB Image Viewer

Posted: Thu Jun 20, 2013 12:46 pm
by Kwai chang caine
Thanks RASHAD 8)

Like i'm good only for found bug ..i have found one :oops:
If you wheel too much for reduce picture...a nice red line appears in the code line 135 :cry:

At my advice, a dblClick on the picture furthermore the preview menu, would be cool, but it's just my poor advice :wink:
Good works 8)

Re: PB Image Viewer

Posted: Thu Jun 20, 2013 6:39 pm
by RASHAD
- Another approach
- Fixed some bugs
- Use Right Mouse Click on Image to convert it to Gray Scale

Code: Select all

UsePNGImageDecoder()
UsePNGImageEncoder()
UseJPEGImageDecoder()
UseJPEGImageEncoder()
UseJPEG2000ImageEncoder()
UseJPEG2000ImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()

Global Dim Selected$(0),Scale.f
Scale = 1

LoadFont(0,"WingDings",16)
LoadFont(1,"Tahoma",16)

Procedure GrayImage()
  If StartDrawing(ImageOutput(1))
    For y1 = 0 To ImageHeight(1) - 1
      For x1 = 0 To ImageWidth(1) - 1
        Color = Point(x1, y1)
        NChrome = Round(Red(Color) * 0.56 + Green(Color) * 0.33 + Blue(Color) * 0.11, 0)
        Plot(x1, y1, RGB(NChrome,NChrome,NChrome))
      Next x1
    Next y1
    StopDrawing()
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf
EndProcedure 

Procedure Encode_to(depth) 
  If ImageDepth(0 ,#PB_Image_OriginalDepth) > depth
    *Buffer = EncodeImage(1,#PB_ImagePlugin_PNG,#PB_Image_FloydSteinberg,depth)
    CatchImage(1,*Buffer)
    StartDrawing(CanvasOutput(2))
       Box(0,0,GadgetWidth(2),GadgetHeight(2),$9F9F9F)
       DrawImage(ImageID(1),(GadgetWidth(2)-ImageWidth(1))/2,(GadgetHeight(2)-ImageHeight(1))/2) 
    StopDrawing()
  EndIf
EndProcedure

If OpenWindow(0,0,0,1024,768,"Image Viewer",#PB_Window_SystemMenu| #PB_Window_MaximizeGadget| #PB_Window_MinimizeGadget| #PB_Window_SizeGadget| #PB_Window_ScreenCentered)

  ExplorerTreeGadget(0, 10, 10, 200, 0, "*.*")
  SetGadgetColor(0, #PB_Gadget_BackColor, $FEE9D3)
  ListIconGadget(1,  220,  10, 0, 0, "", 120, #PB_ListIcon_GridLines|#PB_ListIcon_MultiSelect|#LVS_AUTOARRANGE)
  SetGadgetAttribute(1, #PB_ListIcon_DisplayMode, #PB_ListIcon_LargeIcon)
  SetGadgetColor(1, #PB_Gadget_BackColor, $E2FEFD)
  
  CanvasGadget(2,10,10,0,0,#PB_Canvas_Border|#PB_Canvas_Keyboard)
 
  ContainerGadget(4,0,0,200,22,#PB_Container_BorderLess)
    ButtonGadget(5,0,0,60,22,Chr($D7))
    SetGadgetFont(5,FontID(0))
    ButtonGadget(6,70,0,60,22,Chr($D9))
    SetGadgetFont(6,FontID(0))
    ButtonGadget(7,140,0,60,22,Chr($D8))
    SetGadgetFont(7,FontID(0))
  CloseGadgetList()  
    
  HideGadget(2,1)
  HideGadget(4,1)
  
  CreatePopupMenu(0)
    MenuItem(1, "Preview")
    MenuItem(2, "Quit")
    
  CreatePopupMenu(1)
    MenuItem(3, "Convert to Gray")
     OpenSubMenu("Encoded to :")
      MenuItem(4, "1 Bit depth")
      MenuItem(5, "2 Bit depth")
      MenuItem(6, "4 Bit depth")
      MenuItem(7, "8 Bit depth")
     CloseSubMenu()
    MenuItem(8,"Save as...") 
    MenuItem(9, "Quit")
    
TextGadget(10,0,0,200,24,"READY",#SS_CENTERIMAGE | #SS_CENTER)
SetGadgetFont(10,FontID(1))
SetGadgetColor(10, #PB_Gadget_FrontColor, #Red)
   
  
Repeat 
    Select WaitWindowEvent() 
      Case #PB_Event_CloseWindow 
        Quit = 1
        
      Case #PB_Event_SizeWindow
            ResizeGadget(0,#PB_Ignore, #PB_Ignore, #PB_Ignore,WindowHeight(0,#PB_Window_InnerCoordinate)-50)
            ResizeGadget(1,#PB_Ignore, #PB_Ignore, WindowWidth(0,#PB_Window_InnerCoordinate)-230, WindowHeight(0,#PB_Window_InnerCoordinate)-50)
            ResizeGadget(2,#PB_Ignore, #PB_Ignore, WindowWidth(0,#PB_Window_InnerCoordinate)-20, WindowHeight(0,#PB_Window_InnerCoordinate)-60)
            ResizeGadget(4,WindowWidth(0,#PB_Window_InnerCoordinate)/2 - 105, WindowHeight(0,#PB_Window_InnerCoordinate)-35, #PB_Ignore,#PB_Ignore)
            ResizeGadget(10,WindowWidth(0,#PB_Window_InnerCoordinate)/2 - 105,WindowHeight(0,#PB_Window_InnerCoordinate)-35,200, 24)
            If IsImage(1)
               StartDrawing(CanvasOutput(2))
               Box(0,0,GadgetWidth(2),GadgetHeight(2),$9F9F9F)
                DrawingMode(#PB_2DDrawing_AlphaBlend)
                   DrawImage(ImageID(1),(GadgetWidth(2)-ImageWidth(1))/2,(GadgetHeight(2)-ImageHeight(1))/2) 
               StopDrawing()
            ElseIf IsImage(0)
               StartDrawing(CanvasOutput(2))
               Box(0,0,GadgetWidth(2),GadgetHeight(2),$9F9F9F)
                DrawingMode(#PB_2DDrawing_AlphaBlend)
                   DrawImage(ImageID(0),(GadgetWidth(2)-ImageWidth(0))/2,(GadgetHeight(2)-ImageHeight(0))/2) 
               StopDrawing()                              
            EndIf
            
           
            
      Case #PB_Event_Menu
          Select EventMenu()
             Case 1
                 HideGadget(0,1)
                 HideGadget(1,1)
                 HideGadget(10,1)
                 HideGadget(2,0)
                 HideGadget(4,0)
                 LoadImage(0,Selected$(0))
                 CopyImage(0,1)
                 StartDrawing(CanvasOutput(2))
                  Box(0,0,GadgetWidth(2),GadgetHeight(2),$9F9F9F)
                     DrawImage(ImageID(1),(GadgetWidth(2)-ImageWidth(1))/2,(GadgetHeight(2)-ImageHeight(1))/2) 
                  StopDrawing()
                 Loaded = 0
                 
             Case 3
                    GrayImage()
                    ;CopyImage(0,1)
                    StartDrawing(CanvasOutput(2))
                     Box(0,0,GadgetWidth(2),GadgetHeight(2),$9F9F9F)
                     DrawImage(ImageID(1),(GadgetWidth(2)-ImageWidth(1))/2,(GadgetHeight(2)-ImageHeight(1))/2)
                    StopDrawing()
                    
             Case 4
                  Encode_to(1)
                  
             Case 5
                  Encode_to(2)
                  
             Case 6
                  Encode_to(4)
                  
             Case 7                  
                  Encode_to(8)
                  
             Case 8
                    File$ = SaveFileRequester("Please choose file to save", "", "BMP (*.bmp)|*.bmp|JPG (*.jpg)|*.jpg|PNG (*.png)|*.png", 0)
                    If GetExtensionPart(File$) = "bmp"
                        SaveImage(1,File$,#PB_ImagePlugin_BMP )
                    ElseIf GetExtensionPart(File$) = "jpg"
                        SaveImage(1,File$,#PB_ImagePlugin_JPEG)
                    ElseIf GetExtensionPart(File$) = "png"
                        SaveImage(1,File$,#PB_ImagePlugin_PNG,#PB_Image_FloydSteinberg)
                    EndIf

                                      
                       
          EndSelect
         
      Case #PB_Event_Gadget 
        Select EventGadget() 
          Case 0
                SetGadgetText(10,"Wait !")
                Dir$ = GetGadgetText(0) 
                ClearGadgetItems(1)
                If ExamineDirectory(0, Dir$, "*.*") <> 0
                  Repeat
                    NextEntry     = NextDirectoryEntry(0) 
                    FileName$     = DirectoryEntryName(0)
                    Ext$          = LCase(GetExtensionPart(FileName$))
                    If Ext$ = "bmp" Or Ext$ = "jpg" Or Ext$ = "png" Or Ext$ = "tif" Or Ext$ = "tga"
                      LoadImage(10,Dir$ + FileName$)
                      CreateImage(0,32,32)
                      StartDrawing(ImageOutput(0))
                        DrawImage(ImageID(10),0,0,32,32)
                      StopDrawing()
                      AddGadgetItem(1, -1, FileName$,ImageID(0))
                    EndIf
                  Until NextEntry = 0
                EndIf
                SetGadgetText(10,"Ready")
              
          Case 1
              Select EventType()
                   Case #PB_EventType_LeftClick
                        k = 0
                        ReDim Selected$(0)
                        For i = 0 To CountGadgetItems(1)
                           If GetGadgetItemState(1,i) = #PB_ListIcon_Selected
                              Selected$(k) = Dir$ + GetGadgetItemText(1,i)
                              ;Debug Selected$(k)
                              k +1
                              ReDim Selected$(k)
                           EndIf
                        Next
                        k - 1
                   
                   Case #PB_EventType_RightClick
                         DisplayPopupMenu(0,WindowID(0))
                         
              EndSelect
              
          Case 2
               Select EventType()
                  Case #PB_EventType_LeftClick
                  
                  Case #PB_EventType_RightClick
                        DisplayPopupMenu(1,WindowID(0))
                       
                  Case #PB_EventType_MouseEnter
                       SetActiveGadget(2)                       
                       
                  Case #PB_EventType_MouseWheel
                       Delta = GetGadgetAttribute(2, #PB_Canvas_WheelDelta)
                       If Delta = 1 And IsImage(0)
                          Scale = Scale + 0.05
;                           If Scale > 3
;                              Scale = 3
;                           EndIf
                          CopyImage(0,1)
                          ResizeImage(1,ImageWidth(1)*Scale,ImageHeight(1)*Scale)
                       ElseIf Delta = -1 And IsImage(0)
                          Scale = Scale - 0.05
                          If Scale < 0.05
                             Scale = 0.05
                          EndIf
                          CopyImage(0,1)
                          ResizeImage(1,ImageWidth(1)*Scale,ImageHeight(1)*Scale)
                       EndIf
                       StartDrawing(CanvasOutput(2))
                       Box(0,0,GadgetWidth(2),GadgetHeight(2),$9F9F9F)
                           DrawImage(ImageID(1),(GadgetWidth(2)-ImageWidth(1))/2,(GadgetHeight(2)-ImageHeight(1))/2) 
                       StopDrawing()

                        
               EndSelect

              
          Case 5              
               Loaded - 1
               If Loaded < 0
                  loaded = 0
                  Scale = 1
               EndIf
               LoadImage(0,Selected$(Loaded))
               CopyImage(0,1)
                  StartDrawing(CanvasOutput(2))
                  Box(0,0,GadgetWidth(2),GadgetHeight(2),$9F9F9F)
                     DrawImage(ImageID(1),(GadgetWidth(2)-ImageWidth(1))/2,(GadgetHeight(2)-ImageHeight(1))/2) 
                  StopDrawing()
                     
          Case 6
               HideGadget(0,0)
               HideGadget(1,0)
               HideGadget(10,0)
               HideGadget(2,1)
               HideGadget(4,1)
          
                 
          Case 7
               Loaded + 1
               If Loaded > k
                  loaded = k
                  Scale = 1
               EndIf
               LoadImage(0,Selected$(Loaded))
                CopyImage(0,1)
                StartDrawing(CanvasOutput(2))
                Box(0,0,GadgetWidth(2),GadgetHeight(2),$9F9F9F)
                   DrawImage(ImageID(1),(GadgetWidth(2)-ImageWidth(1))/2,(GadgetHeight(2)-ImageHeight(1))/2) 
                StopDrawing()
               
        EndSelect 
    EndSelect 
Until Quit = 1 
EndIf 

Edit : Bugs fixed
Edit #2 : Update

Re: PB Image Viewer

Posted: Thu Jun 20, 2013 9:33 pm
by Kwai chang caine
Works great, thanks RASHAD 8)

Re: PB Image Viewer

Posted: Fri Jun 21, 2013 10:38 pm
by davido
Very nice RASHAD. Great improvements. :D

I like the grey option. But what is the reason of choosing the factors of 0.56, 0.33 0.11 for R G B respectively? I think I might learn something useful if I knew why.

Re: PB Image Viewer

Posted: Fri Jun 21, 2013 11:27 pm
by ar-s
Maybe you could add a "Loading..." message while user opening a big directory.
Great job.

Re: PB Image Viewer

Posted: Sat Jun 22, 2013 11:22 am
by RASHAD
Thanks guys
Previous post updated

Re: PB Image Viewer

Posted: Mon Jul 14, 2014 12:02 am
by juror
Since it's not immediately apparent - what changed in 5.3?

TIA

very nice RASHAD