Book & Viewer & Magnify

Share your advanced PureBasic knowledge/code with the community.
JHPJHP
Addict
Addict
Posts: 2129
Joined: Sat Oct 09, 2010 3:47 am
Contact:

Book & Viewer & Magnify

Post by JHPJHP »

Last edited by JHPJHP on Thu Jun 22, 2023 5:38 pm, edited 74 times in total.
Little John
Addict
Addict
Posts: 4519
Joined: Thu Jun 07, 2007 3:25 pm
Location: Berlin, Germany

Re: Comic Book / Magnifying Glass

Post by Little John »

Cool, thanks for sharing!
User avatar
BasicallyPure
Enthusiast
Enthusiast
Posts: 536
Joined: Thu Mar 24, 2011 12:40 am
Location: Iowa, USA

Re: Comic Book / Magnifying Glass

Post by BasicallyPure »

By some strange coincidence I have spent several hours the last couple of days scanning comic books.

I tried your comic book code and it works fine.

The magnifying glass works as well for me.
It surprised me though, I didn't expect the transparent effect.
That is a very interesting effect.
It is unfortunate that the flicker problem is there.
BasicallyPure
Until you know everything you know nothing, all you have is what you believe.
JHPJHP
Addict
Addict
Posts: 2129
Joined: Sat Oct 09, 2010 3:47 am
Contact:

Re: Comic Book / Magnifying Glass

Post by JHPJHP »

You're welcome Little John.

---------------------------------

Hi BasicallyPure,

What OS are you running?

I've tested the magnifying glass example on Windows 7 and Window 8.1 with no flicker.
- by setting transparency to an obscure color (not used in most images) the flicker disappeared completely

Code: Select all

SetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE, #WS_EX_LAYERED)
SetLayeredWindowAttributes_(WindowID(0), RGB(124, 109, 146), #Null, #LWA_COLORKEY)
I've just tested the magnifying glass example on Windows XP and the flicker was very noticeable.

DWM probably made the difference, which was only available in Windows Vista and later:

Code: Select all

Prototype protoDwmIsCompositionEnabled(*pfEnabled)
Prototype protoDwmFlush()
Last edited by JHPJHP on Sat Feb 21, 2015 6:04 pm, edited 1 time in total.
User avatar
BasicallyPure
Enthusiast
Enthusiast
Posts: 536
Joined: Thu Mar 24, 2011 12:40 am
Location: Iowa, USA

Re: Comic Book / Magnifying Glass

Post by BasicallyPure »

JHPJHP wrote:What OS are you running?
Windows 7 (x64)
PureBasic 5.30 (x86)

Can you describe what the effect should look like?
I expected I would see the original image in background with
a magnified area inside the magnify glass.
I only see the area inside the glass, everything outside the glass
is transparent.
Perhaps my expectation is wrong and it is functioning as you intended.
Last edited by BasicallyPure on Wed Feb 18, 2015 8:27 pm, edited 1 time in total.
BasicallyPure
Until you know everything you know nothing, all you have is what you believe.
User avatar
Kwai chang caine
Always Here
Always Here
Posts: 5342
Joined: Sun Nov 05, 2006 11:42 pm
Location: Lyon - France

Re: Comic Book / Magnifying Glass

Post by Kwai chang caine »

You are incredible !! :D

I have try your code on my old machine XP SP3 with v5.23 and that works perfectly.
A little bit slow for turning the page, with my old processor, and poor graphic card, but that works.
For the glass a little flickering, surely for the same reason....

Thanks a lot again, for this new subject, like usually sharing 8)
JHPJHP...the creator of dream !!! :shock:
ImageThe happiness is a road...
Not a destination
JHPJHP
Addict
Addict
Posts: 2129
Joined: Sat Oct 09, 2010 3:47 am
Contact:

Re: Comic Book / Magnifying Glass

Post by JHPJHP »

Thank you Kwai chang caine, always a pleasure to hear from you.
- ComicBook.pb: the speed for turning the page can be increased [ #PAGE_SPEED ]
- MagnifyingGlass.pb: Windows XP is not fully supported [ missing DWM ]

------------------------------------------

Hi BasicallyPure,

Can you please test the following:
- remove the Compiler Option: Enable modern theme support (for Windows XP and above)

NB*: I don't have this option set for the original code I'm using in my Comic Reader.

Thank you.

------------------------------------------

I've updated the examples with the above setting removed.
Last edited by JHPJHP on Sat Feb 21, 2015 6:06 pm, edited 9 times in total.
davido
Addict
Addict
Posts: 1890
Joined: Fri Nov 09, 2012 11:04 pm
Location: Uttoxeter, UK

Re: Comic Book / Magnifying Glass

Post by davido »

@JHPJHP,
Another great job!
Thank you for sharing. :D
DE AA EB
JHPJHP
Addict
Addict
Posts: 2129
Joined: Sat Oct 09, 2010 3:47 am
Contact:

Re: Comic Book / Magnifying Glass

Post by JHPJHP »

Thank you davido, I really appreciate the response.

-----------------------------------------------

Hi BasicallyPure,

Thank you for taking the time to provide feedback!

Yes the inside of the magnifying glass displays the image, and the outside is blank (transparent).

This example is just the magnifying glass:

A digital comic image is usually very large and needs to be resized to fit the screen. What I've done for my Comic Viewer is drawn the resized image to a window, then using a simple ratio algorthium, displayed the original image in the magnifing glass giving the appearence of a very clear zoomed effect.

NB*: Did you see my previous post about removing the Compiler Option: Enable modern theme support (for Windows XP and above)?
User avatar
BasicallyPure
Enthusiast
Enthusiast
Posts: 536
Joined: Thu Mar 24, 2011 12:40 am
Location: Iowa, USA

Re: Comic Book / Magnifying Glass

Post by BasicallyPure »

JHPJHP wrote:Remove the Compiler Option: Enable modern theme support (for Windows XP and above)
Here is the code I am using for the magnifier.
I don't see any "Compiler Option" in it.

Code: Select all

#MAGNIFY_FIT = 0 : #MAGNIFY_ORIGINAL = 1 : #MAGNIFY_ZOOM = 2 : nMagnify = #MAGNIFY_FIT

Prototype protoDwmIsCompositionEnabled(*pfEnabled)
Prototype protoDwmFlush()

Global DwmIsCompositionEnabled.protoDwmIsCompositionEnabled
Global DwmFlush.protoDwmFlush
Global DwmResult, hDCin, glassSize = 400, glassRim = glassSize / 2

Procedure.s GetImage(Position = 0)
  ImageFolder.s = Space(#MAX_PATH)
  SHGetFolderPath_(#Null, #CSIDL_MYPICTURES, 0, 0, ImageFolder)
  PathAddBackslash_(ImageFolder)
  Pattern.s = "All Images (*.*)|*.bmp;*.jpeg;*.jpg;*.jpe;*.png|Windows Bitmaps (*.bmp)|*.bmp|JPEG Files (*.jpg)|*.jpeg;*.jpg;*.jpe|Portable Network Graphics (*.png)|*.png"
  ProcedureReturn OpenFileRequester("Choose an image file", ImageFolder, Pattern, Position)
EndProcedure

Procedure OpenMagnify() 
  If OpenWindow(0, 0, 0, glassSize, glassSize, "Magnify", #PB_Window_Invisible | #PB_Window_BorderLess | #PB_Window_ScreenCentered)
    SetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE, #WS_EX_LAYERED)
    SetLayeredWindowAttributes_(WindowID(0), RGB(124, 109, 146), #Null, #LWA_COLORKEY)
    StickyWindow(0, 1)
    winRegion = CreateEllipticRgn_(0, 0, glassSize, glassSize)
    SetWindowRgn_(WindowID(0), winRegion, #True)
    DeleteObject_(winRegion)
  EndIf
EndProcedure

Procedure DrawMagnify()
  hDCout = StartDrawing(WindowOutput(0))
  BitBlt_(hDCout, 0, 0, glassSize, glassSize, hDCin, WindowX(0), WindowY(0), #SRCCOPY)
  DrawingMode(#PB_2DDrawing_Outlined)
  Circle(glassRim, glassRim, glassRim, RGB(0, 100, 0))
  Circle(glassRim, glassRim, glassRim - 1, RGB(0, 100, 0))
  Circle(glassRim, glassRim, glassRim - 2, RGB(0, 0, 0))
  Circle(glassRim, glassRim, glassRim - 3, RGB(0, 0, 0))
  Circle(glassRim, glassRim, glassRim - 4, RGB(128, 128, 128))
  Circle(glassRim, glassRim, glassRim - 5, RGB(128, 128, 128))
  Circle(glassRim, glassRim, glassRim - 6, RGB(128, 128, 128))
  Circle(glassRim, glassRim, glassRim - 7, RGB(192, 192, 192))
  Circle(glassRim, glassRim, glassRim - 8, RGB(192, 192, 192))
  Circle(glassRim, glassRim, glassRim - 9, RGB(255, 255, 255))
  Circle(glassRim, glassRim, glassRim - 10, RGB(0, 0, 0))
  StopDrawing()
EndProcedure

Procedure MoveMagnify(void)
  Repeat
    GetCursorPos_(p.POINT)
    xpos = p\x - (glassSize / 2)
    ypos = p\y - (glassSize / 2)
    SetWindowPos_(WindowID(0), 0, xpos, ypos, glassSize, glassSize, #SWP_NOZORDER | #SWP_NOCOPYBITS)
    DrawMagnify()

    If DwmResult : DwmFlush() : EndIf

  ForEver
EndProcedure

If OSVersion() >= #PB_OS_Windows_Vista
  dwmapi = OpenLibrary(#PB_Any, "dwmapi.dll")

  If dwmapi
    DwmIsCompositionEnabled = GetFunction(dwmapi, "DwmIsCompositionEnabled")
    DwmFlush = GetFunction(dwmapi, "DwmFlush")

    If DwmFlush And DwmIsCompositionEnabled : DwmIsCompositionEnabled(@DwmResult) : EndIf

    CloseLibrary(dwmapi)
  EndIf
EndIf
UseJPEGImageDecoder() : UsePNGImageDecoder()
imageFile.s = GetImage()

If imageFile
  LoadImage(0, imageFile)

  If IsImage(0)
    imageWidth = ImageWidth(0) : imageHeight = ImageHeight(0)
    ExamineDesktops() : dtWidth = DesktopWidth(0) : dtHeight = DesktopHeight(0)

    If nMagnify
      ResizeImage(0, imageWidth * nMagnify, imageHeight * nMagnify)
    Else
      Select #True
        Case Bool(imageWidth > dtWidth And imageHeight > dtHeight)
          tmpRatio1.d = dtWidth / imageWidth : tmpRatio2.d = dtHeight / imageHeight

          If tmpRatio1 < tmpRatio2
            imageRatio.d = tmpRatio1
          Else
            imageRatio.d = tmpRatio2
          EndIf
        Case Bool(imageWidth > dtWidth)
          imageRatio.d = dtWidth / imageWidth
        Case Bool(imageHeight > dtHeight)
          imageRatio.d = dtHeight / imageHeight
        Default
          imageRatio.d = 1
      EndSelect
      ResizeImage(0, imageWidth * imageRatio, imageHeight * imageRatio)
    EndIf
    nX = dtWidth / 2 - ImageWidth(0) / 2 : nY = dtHeight / 2 - ImageHeight(0) / 2
    CreateImage(1, dtWidth, dtHeight, 32, RGB(0, 0, 0))

    If StartDrawing(ImageOutput(1))
      DrawImage(ImageID(0), nX, nY)
      StopDrawing()
    EndIf
    FreeImage(0) : OpenMagnify() : ShowCursor_(0)
    hDCin = CreateCompatibleDC_(0) : SelectObject_(hDCin, ImageID(1)) : DrawMagnify()

    If DwmResult : DwmFlush() : EndIf

    CreateThread(@MoveMagnify(), #Null) : HideWindow(0, 0)
    ShowWindow_(WindowID(0), #SW_HIDE)
    SetWindowLong_(WindowID(0), #GWL_EXSTYLE, #WS_EX_TOOLWINDOW)
    ShowWindow_(WindowID(0), #SW_SHOW)

    Repeat
      Select WaitWindowEvent() 
        Case #WM_LBUTTONDOWN
          DeleteDC_(hDCin) : ShowCursor_(1) : CloseWindow(0) : FreeImage(1) : Break
      EndSelect
    ForEver
  EndIf
EndIf : End
Perhaps you are referring to this bit:
Removing it has no effect that I can see.
Flicker is still present when the magnifier is moving.

Code: Select all

If OSVersion() >= #PB_OS_Windows_Vista
  dwmapi = OpenLibrary(#PB_Any, "dwmapi.dll")

  If dwmapi
    DwmIsCompositionEnabled = GetFunction(dwmapi, "DwmIsCompositionEnabled")
    DwmFlush = GetFunction(dwmapi, "DwmFlush")

    If DwmFlush And DwmIsCompositionEnabled : DwmIsCompositionEnabled(@DwmResult) : EndIf

    CloseLibrary(dwmapi)
  EndIf
EndIf
BasicallyPure
Until you know everything you know nothing, all you have is what you believe.
JHPJHP
Addict
Addict
Posts: 2129
Joined: Sat Oct 09, 2010 3:47 am
Contact:

Re: Comic Book / Magnifying Glass

Post by JHPJHP »

Hi BasicallyPure,

Sorry I should have been more clear: the Compiler Option settings in the IDE.
- [ MENU ] / Compiler / Compiler Options...
-- Create unicode executable: unchecked
-- Enable modern theme support (for Windows XP and above): unchecked

Windows Vista and above should display without a flicker.

NB*: The above settings should be updated/removed for both examples.

Thank you again.
User avatar
BasicallyPure
Enthusiast
Enthusiast
Posts: 536
Joined: Thu Mar 24, 2011 12:40 am
Location: Iowa, USA

Re: Comic Book / Magnifying Glass

Post by BasicallyPure »

JHPJHP wrote:-- Create unicode executable: unchecked
-- Enable modern theme support (for Windows XP and above): unchecked
With boxes unchecked flicker is still present, no change from before.
BasicallyPure
Until you know everything you know nothing, all you have is what you believe.
JHPJHP
Addict
Addict
Posts: 2129
Joined: Sat Oct 09, 2010 3:47 am
Contact:

Re: Comic Book / Magnifying Glass

Post by JHPJHP »

Hi BasicallyPure,

Thank you for your feed back.

I wished the example worked better for you, I'm not sure what the problem could be? I tested it on two separate Windows 7 x64 laptops, and a Windows 8.1 laptop with no discernable flicker, but with the number of possible Windows configurations...

If I figure something out I'll post an update, but it's not one of those examples I'm willing to spend too much time on.

Thanks again.
JHPJHP
Addict
Addict
Posts: 2129
Joined: Sat Oct 09, 2010 3:47 am
Contact:

Re: Comic Book / Magnifying Glass

Post by JHPJHP »

Updated: MagnifyingGlass.pb (Windows XP not supported)
- optimized parts of the code that may have caused a flicker on some computers
- restructured the code layout removing redundancies
- added / recoded options:
-- #MAGNIFY_SIZE = 400
-- #MAGNIFY_COLOR = $033B03
-- #MAGNIFY_SHOW = #MAGNIFY_SHOW_UNDER_WINDOW
-- #MAGNIFY_RATIO = #MAGNIFY_RATIO_FIT
-- #MAGNIFY_FRAME = #MAGNIFY_FRAME_USER_DEFINED

#MAGNIFY_FRAME_USER_DEFINED is currently set to the shape of a triangle, but can be made into any shape.

------------------------------------------------------------

Updated:
- #MAGNIFY_COLOR = #Null to remove the border
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4622
Joined: Sun Apr 12, 2009 6:27 am

Re: Comic Book / Magnifying Glass

Post by RASHAD »

Hi JHPJHP
Do not have much time right now
Maybe I will continue it soon

Code: Select all

UsePNGImageDecoder()
CatchImage(0,?Magnifier)
ResizeImage(0,ImageWidth(0)*1.5, ImageHeight(0)*1.5)
CopyImage(0,2)
CatchImage(1,?girl2)

CreateImage(3,30,30,24,#Red)
StartDrawing(ImageOutput(3))
    Circle(15,14,4,#Yellow)
StopDrawing()

OpenWindow(0, 0, 0, ImageWidth(0), ImageHeight(0), "", #PB_Window_BorderLess|#PB_Window_ScreenCentered)
  
  ImageGadget(0,0,0,ImageWidth(0),ImageHeight(0),ImageID(0))
  
  SetWindowLongPtr_(WindowID(0),#GWL_EXSTYLE,GetWindowLongPtr_(WindowID(0),#GWL_EXSTYLE)|#WS_EX_LAYERED) 
  SetLayeredWindowAttributes_(WindowID(0),#White,0,#LWA_COLORKEY)
  DisableGadget(0, 1)
  
  ButtonImageGadget(10,250,250,30,30, ImageID(3),#WS_CLIPCHILDREN) 
  Reg=CreateEllipticRgn_(4,4,27,27)
  SetWindowRgn_(GadgetID(10),Reg,1) 
  SetWindowLongPtr_(GadgetID(0), #GWL_STYLE, GetWindowLongPtr_(GadgetID(0), #GWL_STYLE) | #WS_CLIPSIBLINGS)
  SetWindowPos_(GadgetID(0), #HWND_BOTTOM, -1, -1, -1, -1, #SWP_NOSIZE | #SWP_NOMOVE)
   
Repeat 
    Select WaitWindowEvent()               
                 
      Case #WM_LBUTTONDOWN
              SetGadgetState(0,ImageID(0))
              SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTCAPTION, 0) 
                     
      Case #PB_Event_Gadget 
        Select EventGadget() 
          Case 10
                     StartDrawing(ImageOutput(2))
                         Box(55,55,130,130,#White)
                         DrawImage(ImageID(1),55,55,130,130)
                     StopDrawing()
                     SetGadgetState(0,ImageID(2))
            
        EndSelect 
        
    EndSelect 
    
Until GetAsyncKeyState_(#VK_ESCAPE) & $8000 = 32768

DataSection
Magnifier:
   Data.q $0A1A0A0D474E5089,$524448490D000000,$E1000000E1000000,$226D090000000308,$544C507E00000048
   Data.q $EA000000FFFFFF45,$EDEDED1B1B1BEAEA,$FBFBF4F4F4CECECE,$D6C4C4C4D9D9D9FB,$D2D2D2E0E0E0D6D6
   Data.q $1717E6E6E6212121,$2D46464637373717,$AEAEAE9595952D2D,$7171A8A8A8B4B4B4,$A2888888BEBEBE71
   Data.q $6262620C0C0CA2A2,$51517E7E7E131313,$5D3E3E3E55555551,$7878784848485D5D,$98986A6A6A292929
   Data.q $8E8686868F8F8F98,$49230900003362C9,$695DED9C78544144,$A2636B960C30F243,$FFD45E10E43EE308
   Data.q $5DA4D208A75F07FF,$FB69DF3C1D74923B,$6AE1E1F4B5CD34D0,$6A35EEB27CE19374,$987CFDEB7B9E2C47
   Data.q $7CF6A23BDA1FAF34,$913B8D5DB1E9ABDF,$18DB34F4461645EF,$C8063C1CBAF09DC8,$4477A1B3FC3D3EB2
   Data.q $60737D3922C24FBA,$6DB2F7C49395BBF7,$20C583F7A774F9D1,$C6FBF28AEC93DD04,$49A1E2330137CB5B
   Data.q $00C2CDF53FA1DA71,$DD38E56576197E02,$76ACA32EB0CBF092,$09BEEB2C32FC64D6,$BE062D4FEB0B8829
   Data.q $19D8AFE469205D39,$061344275A6F93E9,$907ED4DF623E197E,$DF1D7AD5AC11333C,$FA1865F8D80C32E4
   Data.q $16190FB95B10F7A6,$BFA1D983FE6CC3BB,$CDB6C133C4D9FDB0,$F59C1A0B61FB7B4A,$F7AF523F71B13864
   Data.q $DC8477BB7D7734C6,$8F0C773F47D6F519,$AEC36F696738FFD7,$B37BA49E799D28C5,$E2F6E76D65C666E2
   Data.q $C2C8CC75E5981DD5,$68E3B6874D69BD80,$C1C830B3BE46E32D,$63B64F1155A0B0C1,$2C30B9FD7C83F11A
   Data.q $507EA59D0CBF10A7,$1AF2CA5DA5753371,$D6C9CCA1EF49E43B,$270DAF4992AD056E,$B99BAA8B43745E8D
   Data.q $1DBD656DEBB3156E,$1E34259A2469782F,$B6816F0CD1AF8759,$9CD227672A130166,$A410D631B05085C6
   Data.q $85384B65871A273C,$35C8F5A0BCD5F801,$D03E0D12749EEF16,$3C6D05D40B1B53A9,$06AE01069E223230
   Data.q $44CE8A669579F4D6,$8DE2C86844024FFD,$EA98E7DCBE342A65,$8C5733C0EACBD02F,$9600AA2A16CC8EBA
   Data.q $F8C56F5914E1B35C,$16761F38C3719915,$C99C7BB7B314E559,$98A81A3297F626DB,$9C988F6E55E0B331
   Data.q $F43B93F258A7FDF2,$6A62308B64E6423E,$CA4C18598B623F86,$622D788927EE4626,$1A99C21A66786F86
   Data.q $4B226C89A25D333C,$7217FC9942DB1508,$C67E4720F31C363A,$89B1C54024020F31,$9C887BD2A54DF2F0
   Data.q $C357214F88C25832,$A3508B33E80FA484,$A2BA81A008A399B1,$4881EA2FF123A29E,$0122A4030361B510
   Data.q $80D6DA84E8601385,$FF9813DD916CA1FF,$073F224AF004ED1F,$0332DD9AE89B8039,$9226E19EE74A8BD6
   Data.q $5C0A67AE904DC6DE,$A1D1CA67AA4C0018,$D28A9B412BD7CA90,$5FF3E0A142C900C3,$10860A4C613B50C0
   Data.q $8481C500DF799385,$86C7A8F8250C337F,$2CD9B8039B3A1431,$7419755BC43CE011,$0336A9F917707E21
   Data.q $C1E2022184591576,$CA96CB0E01403C9E,$2380773D8007037D,$DAC8076654456502,$A8B4B806F96E287B
   Data.q $0E94ABE4FC50543C,$7C97B0357F54FA5C,$51AA950B8E03BB7D,$B5588CEB8D11EDC7,$9432ABA6AA347A3C
   Data.q $1C6815A402FF7DF5,$006BA5C81041107D,$FDBAC40B6B9A370C,$BE9946871F02ECD5,$D0A5D4B4114688F3
   Data.q $216A324F75200078,$4A46A99353409500,$4D2195062D46485F,$16A324770EBD48B4,$C5AB4A89A6F49A83
   Data.q $9B7FD4339A21F249,$84E32A43255609C6,$432AA68268E3F541,$2BF7B6A85F8C111F,$CBD7A3C86265A8C9
   Data.q $265A8C90F41410C4,$0C4CB519236CC086,$55192719C087BFAB,$BAA8474837CBD41D,$24F9959AAA324174
   Data.q $1925320B5418B519,$58D0D364CBAC7555,$50DF89629EA8EA90,$926F11052EC689E5,$C16F8D0A5D418B51
   Data.q $5A3487F8010ABFA3,$7C0D5C7DFD84040F,$D7F1A71061729A7C,$62029669848409CF,$268693001CFAFE6D
   Data.q $0039B5FCE6EA06D6,$E258753141445FC5,$2A81B86A447B1D5A,$2406AA5F39FE0DCF,$552FBF4809A4A910
   Data.q $0306F03EA9308A03,$530AD402FD7C574B,$9A6A87A5E541DF45,$A044B8EA85E8B00C,$D3DF701FEB4FCBE6
   Data.q $40C138FC3A40C859,$90D99B90169DD01F,$C69D1B21F800ED0D,$90804DCA3E48D583,$768F9EFF0222AE12
   Data.q $20415474A1C7C071,$489B5804E07A2696,$0FA5FCBCA9600DA9,$E1A047419650717B,$49AF803B747086C8
   Data.q $95F4B709F863CD69,$98F509AA3688C508,$C40560B6193317E4,$7089BB273CEC3FF6,$76446CD8474DA90B
   Data.q $1F20F5575216E113,$923F1F20D59649C8,$D0E7C9AD7B7B01CF,$BF0A015F403CE902,$30F21A42FEAC1159
   Data.q $E2A917FC63F08DD8,$9F209E49E6081028,$B4074E90DD054A00,$062FE991E7E9759F,$4152D617FCAE379C
   Data.q $2A9AB957CF914E42,$2B64A9F4040DCD20,$5D63ED9449BA6807,$EE0E5DEC701CD88D,$D6668BE4303588A3
   Data.q $9B6DA1FD5B98D991,$F385ED5AB443E718,$60D8AB2181B404DB,$F55C8A853E529B7D,$57D91BB621CE1FDC
   Data.q $9C731C39B44D100F,$7788A1E7D829ED0F,$917745BAD46F63DD,$802EFDED72BB5043,$A92EF1E1AD2C1859
   Data.q $785F4A66914C2D12,$DC453DED3434BEA5,$D3516F5A5F9F4D6E,$A4DDB78ED62858A9,$6C54A2FF358F70AC
   Data.q $46754D6195BE6B08,$68ED22C4A377BA3A,$16D2F6D5493A3FAB,$BF5E58B5DF697E8C,$F514626DC3E31D8D
   Data.q $9B784721795C5B2F,$FD492F5504C433E2,$141F3168D230D66B,$D6976B68A6F5FF0D,$98E31628495F9736
   Data.q $CA83459E09ABF158,$C73C6AD51D54B2FB,$CE90F398A6FACDBA,$17C65B88E5D6DB67,$A431EF3504C4205D
   Data.q $AB5A88E9DF3B47ED,$3FEAF6A28DE2F57C,$8E3D195B0C8C3D21,$DCD8A07AEA8F2E97,$54B69B3779E6AC5A
   Data.q $3C57FAAD1ADBBCCF,$16827F612A57282A,$97ED5CFCF930FAE9,$64A90EE01CB1073B,$3448B08917F712FA
   Data.q $D397FC9D8A5128E1,$28BB74A8ADF9628A,$EFC5164B6793D358,$14827D0BCD1D0147,$33272B39B8DB1CDB
   Data.q $1789F2584931F8C5,$6D91171DCF467BC8,$85E86B6FAB46A083,$7C9AAADCFC44473D,$5EC1AC42739BAAD1
   Data.q $071733B07EB6DA12,$576FE0BFC51D58B8,$991A1F9ECFE17E69,$5A40B810BFC59DD4,$94694E9F91D18A58
   Data.q $0D9EAAFF5743E284,$85FCDD4EB9E08606,$FC2BEEEC68D55F48,$8514365BFB323760,$9CF3BFB99C7B66DE
   Data.q $8E6EA1CA3EE7E7BE,$76E7F5E81D6D9A78,$34672D7E28A97657,$5937F6255BB961B1,$38F93D7109CDD459
   Data.q $683276DAB5F462E8,$71B78A286CE5E639,$FD96AC1E326EA38E,$06AE5BBA5368C77F,$EA44B55E50B769E3
   Data.q $BA8A703167360B86,$7D560525415797DC,$3F01ABF2B9F1E006,$15E783F3451AAC87,$6D145AB31AAC5410
   Data.q $CFD9C7E629B08B6E,$0EAE5BDEEA2CF308,$4AC68A703F0B9B45,$211A63A2CF108006,$2EE01CFC31CE0344
   Data.q $C59E010CF1090E46,$A88CB14EE48C63BA,$3BCD8B3C038F663B,$4174136A0A011545,$403737505BC51CA8
   Data.q $6BBB80D00FEAF1D1,$DE2806F505008054,$78A57459FEA9BA82,$701BBD4140351A03,$DDEA3406E0418A77
   Data.q $E2806F5050080380,$F578E8A01B9BA82D,$D46BBC5239C06887,$232C53BFEAF5C232,$F5EFA2EEB8DD406E
   Data.q $116E5EFA2EE38016,$41EDE07EDF4AEDD4,$3DFC34DD60E0AB92,$8F8BE2CFAC15747D,$81AF8B3CB024FA06
   Data.q $44550C5DAB0660EE,$3307790A9991607F,$EF01983BD862EEE4,$28BF04F073C276F8,$0C2FF45AB84DD49A
   Data.q $4BAD0BF833F43167,$8D8A1A145494DACC,$3250557018D410CA,$17B91045AB142067,$2AA9E1285507BFC3
   Data.q $C122AC505C5FC19D,$2712E26B9D5A8D0B,$6291C67325355375,$8898A74B3B1E0975,$6D2CB86F279D07FE
   Data.q $4549000000008AC9,$826042AE444E
Magnifierend:

girl2:
   Data.q $0A1A0A0D474E5089,$524448490D000000,$4C0000003B000000,$3FDCE40000000308,$544C5000030000F8
   Data.q $0B05030905030A45,$0C080D07050C0604,$0F14120D110F0B0F,$1916121715111514,$1B181E1A161C1814
   Data.q $1B211E1A201D1A20,$24211D23201D231F,$232127231F25221F,$252B252329252228,$2F2A272E29262D27
   Data.q $2C2B322C29302B28,$2E362E2D352E2D34,$3A33313931303730,$34353D35343C3332,$3646313642333540
   Data.q $46333A4932394830,$3A3C453C3B43383B,$3D453D3D45353C49,$48423F47413E463F,$43434C4341494240
   Data.q $465C44454F44444D,$503946643C46603D,$41485939476C4547,$4A54474952394870,$574A4B55444A5848
   Data.q $4A4C563B4B76484B,$507E3E4E7B3C4D79,$8441538141517F3F,$4D56694656854455,$57625056624D5667
   Data.q $7D5458624C587851,$4A5A854959864C59,$5E68565C664B5A83,$905D66715B636D58,$5166975166935266
   Data.q $698C5E687451669A,$78586B8A53699C55,$5B6D86556C9F626C,$6F7E586EA15F6E81,$A55B71A45A70A361
   Data.q $5F78A75D75A55D73,$7FA8627DA8617BA8,$B46580B06580AB63,$7384936583B86481,$86907685926485BD
   Data.q $C272889E72879A79,$728BA57E8A936789,$8EC8828C95728DAE,$C2728FBA728EB36A,$7290BE6E91CA7190
   Data.q $929B8490987191C6,$C28B98A289959F87,$7B9AC67C9ABF7B99,$9DBD7C9CCC8F9CA5,$BA7D9ECE929EA780
   Data.q $7EA1D396A1A9859F,$A4B380A3D495A3AD,$D794A4AF90A5B691,$86A9D983A7D781A4,$B0D98AAED686ABD8
   Data.q $DC8EB3DC8EB2DA8C,$ACB9C293B8E091B5,$BAE2AABAC4ADB8C0,$C297BCE4A8BBC894,$B7BFC599BFE8B4BC
   Data.q $C4EE9BC2EAA9C0D0,$F0ABC5DABCC3C89D,$C2CACFC0C7CD9FC7,$CCD1ACCBE3A2CBF3,$D3A6CEF4ACCDE7C4
   Data.q $ACD0F1ADCFECC6CE,$D2D6C9D0D5ABD1F2,$DAD0D5D8CDD3D7CB,$D7DBDED5D9DBD2D7,$E3E5DEE2E3DADEE0
   Data.q $ECE4E8E9E3E5E6E1,$E5EDF0E3EBEFE4E9,$F1F2E9F0F2E7EEF1,$F5F2F4F4F0F2F3EC,$F8F9F9F6F7F7F3F5
   Data.q $FCFBFBFBFBFAFAFA,$FFFFFFFFFDFDFDFC,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
   Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
   Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
   Data.q $FFFFFFFFFFFFFFFF,$090000DBDED550FF,$9DC3585441444921,$70001FFF533FFBD8,$36D1B331AD9960FA
   Data.q $B51A4B9427121D97,$5267DC9AB4A4EA3E,$3E7D0C30C8C7CF8B,$B9B4B9694DB6FDCC,$2422DC7D10B3659C
   Data.q $A8F557CBE3E852E4,$AC9433DF11FCE23F,$9F79CE3C1F9EF9A9,$61D7EF5F5F79DCF3,$51A4AFF778F2FC86
   Data.q $E1D25FB30DC8D6F9,$FFCAF955F927DCB2,$3DF7DEF3F0C396C3,$66C79B6C0ECF056D,$B2748D5FF30F5F86
   Data.q $574D02240B876A0F,$407CBF92647CB367,$E8A2467B4BFBEC2B,$ECC1CB77F9DC34BB,$967954D6F2A3F55B
   Data.q $ECC1E7995562ECBA,$D6FBE6FD31A73C94,$0737A5D956664EC6,$E634A4BCD939A3B2,$EF2102D488FEE8C5
   Data.q $666670744C73F640,$BE08CF4DF5767470,$BCA57D00F9F03F90,$F2D9D3F7FBE79BFC,$D03925585339699E
   Data.q $D7DA638D9930E6F8,$C66D20AE765A63FA,$344B86187E61FB44,$B6FF449C991C9B28,$1FD7649A6C672527
   Data.q $F7F58C1FB35BCB09,$D74F47A176747674,$72AC5367C96498EB,$B6CEAEEDEA76E470,$B2AA9ADC8CDCB2E6
   Data.q $DE5318AF7CC9C1E6,$A6B5B067A7FC1CAB,$EA13BE8BC84F2AA6,$D426B27FAAA93C7C,$350D391BB6BFBFEB
   Data.q $CBA5F86C7E0CA215,$DCF0D0D0E4D19197,$DE133BD26CAE91CE,$C71D8E7D1714DB3B,$DDA70D3F326A0D93
   Data.q $E21255D559B95F60,$DAC38E2D18DA645A,$3A381586C9E9E9C9,$14158859F07AEA28,$F60D8EF6C9375E46
   Data.q $214B06357ABC4C8F,$828A9C054E5D0010,$DA3FF8ECEC531480,$0791E9ABC4E0ED2E,$CE8800846E2EFE7E
   Data.q $FB072AC53049380A,$A9189E28B9D5ED34,$9DD107EC3FB27070,$50076D7EEADC0282,$7B568ADBBB8B6EAA
   Data.q $105902B7318B846C,$0FCF3E449C001410,$AA7AC3AEC4FFCE8F,$31313C3B4B277E38,$7C7107A730DD2FD8
   Data.q $411E7CF202000203,$4FB47A37327F16E6,$ED4AFC6B8DA215DA,$0590CAE77F78C4F8,$4599BB0002000C3D
   Data.q $1AC14ED7DDECFAFD,$DF866C871642BB75,$20D4F60E0F8DF455,$54E02051581C6CA7,$2AB7027F2B73F1B8
   Data.q $AF2925A411BB521A,$315E03BFBFB86FBD,$56E26A57409D01B7,$654A30DDB3F6669B,$DC356158F3FA4DA9
   Data.q $F8A3873553DFD7D7,$D2D01F518E00B805,$F15846E5D8FBAB17,$CD4968BADBAC9640,$599475F5F5F7506F
   Data.q $DADB271C894105D8,$B8FCFD7EE9E419D5,$D8BEDD9A4CAB2143,$DA7DB46850AA2ABC,$623A058DC061E636
   Data.q $5F63EDCCAC11FF54,$8236DF782AC8523C,$A7B68D769AFCC27B,$BB0B7B414B03CAA3,$A9FB7192E5F0B2FA
   Data.q $05B761FDBFCB2151,$9A6AD1AC197CDCBC,$DBFC29D8506D9099,$8563D5E67DD24B2F,$F0FA97E5EEF6E0AC
   Data.q $96DB46B5068ABCAC,$E2A19802F92445EF,$F77C81E076E319DE,$9599EF09163A0BAD,$1155D46B50A95795
   Data.q $B94E90C249D2047E,$15D8A265CB2ED468,$0E9E07AD514AD9FD,$657E5142B1311106,$6C02191E7349FA9B
   Data.q $D5616BA34A23EFAC,$D77587AB663AA727,$FB045E1C92D5E44B,$DB3A3A1B8A06686A,$7A9A8D883C27401A
   Data.q $BF54924CC376D46A,$B3A3BDB81AD52A07,$4325731F81B9A3A3,$B084EB6B6B205B98,$7D98CE64B7D53980
   Data.q $14F9B22CE632C306,$159B9B5B5B86A27E,$69B1D892F37FCDCD,$D4C16DCD35054577,$3762325E23062023
   Data.q $35CA8C86645CB0E4,$A6A1A1A0F15DB86A,$957B1B17992B32A6,$1C2ABBFBCA219A97,$B119ADD45BD838C0
   Data.q $6AC7CF45F56370DD,$45720B2A1A2B0C35,$CD9B0C5E64B4C259,$17985776949E173E,$8B1810710A711C0D
   Data.q $8CE7D83D2CB08D1B,$E54F4C279053515A,$4257793779F12527,$63B1CEE3D71BCC99,$6C5ED05C8101AE92
   Data.q $84E3CF0AB2E40AC4,$8BCA91985085705B,$96FD24F4C98571BD,$B112CABD1E8952F2,$F96980005630B1D7
   Data.q $8E9E26129EB94AD1,$5ADA79C46617CBEB,$C4B18C3E1C5B9859,$F79F87C6277B70D8,$4E0EBE498B877B2A
   Data.q $178959EAED0C6687,$6EF736748A7499D6,$05A58C2B4B0B35FA,$5BD6C589636B01C1,$AD3C0D4F12DCA75B
   Data.q $0D46AC51C48940BF,$9E72CE0A71CF916D,$6E69B8BE4F4CC4E6,$E0C74F65616D6D65,$E6FBDB04A55688AC
   Data.q $E769113F44D040FA,$04487CEB68643168,$231F83771834682B,$275816F0130FCC45,$724A5B190C3B2B37
   Data.q $728A0D3D41EA214F,$3714C5DA180F9B20,$779528B956A694C7,$B4B38C9610E36366,$314714B110DAA373
   Data.q $E75299FEA8E12435,$B63464D30EC30E28,$645C3179D2F3CB97,$E3F8A1823A704319,$E302DC4F4776F649
   Data.q $1C09DE89DBFA51B9,$946CAB319D4A11D6,$EE3AC84BA1B1F908,$3AA04812E3609508,$15B385301CF1C850
   Data.q $6BAC48B0DC1E74BC,$2D3B3AB1A2FB11A2,$DAA5B5B65ADE8D89,$04E2A6403D808039,$A28D13B67D89FBBF
   Data.q $ED1F94FB0704B778,$85EB179D2722A4A6,$351DBA3B4745FC2E,$F914D8A147E76888,$DB7894CEB67789F8
   Data.q $42A3732327FC3728,$1632DFA5ED937994,$FBDA240024AE899C,$6E17B84F8A474853,$BBBCF91442E45BC7
   Data.q $E4C92254707DC7F4,$4830DFCFEAADAFB3,$8923A04ECAB434AE,$776F276F7AEDEB58,$3760FFD779F8A48E
   Data.q $69DD2E5EA4E492FE,$DDEDD00460092079,$B8AD3BBD43ADBA00,$169E06884719FB69,$2BB4EC9225B4317C
   Data.q $089C0487197BAFBA,$9EB9D11A0C832471,$D06805CEDE2E28EE,$245BB7B618121031,$53C43096FD988F4A
   Data.q $476740E469FC83DC,$1DB050B928F88872,$C7EE48C102C39D43,$FBBD9328B665F6BD,$747E420CE09B3419
   Data.q $92A04949429D1647,$05880C758AB703EA,$0914CBBED7BEFE46,$DBD70DE2D6EDAEAF,$50A3421EE2EAE397
   Data.q $F1ADD73AF8707D0B,$74BBDBC170B8CFBD,$588CCA225B3B7BF3,$8840FF5C73F1AEFF,$1D62AE0EAE8160C6
   Data.q $3295D095B73DDA52,$D9DFAB43222487CE,$C0F7CF7B0E664F0D,$473900CBE214225C,$A14DD76885CEC85D
   Data.q $3AC188A45BDAF139,$747D2B3BE97AB686,$F8E5C5726F68BAC7,$526C4A9E3C6F8003,$16FAFABAD2541F21
   Data.q $3EB75BDA71E38A95,$E79172F2A56BB737,$030741EF109B5EC2,$56A9B494F25470A3,$67EF7F0C897633B5
   Data.q $5C896CECDFF3050F,$065C38EA483733C2,$A22DA3809E7F3C0D,$EE6E3804676078D1,$5CB16C6377013A10
   Data.q $E59C2ED7BCE5E592,$D1086A30217CD3BA,$817FAE4ED51047DD,$B6AFCFF560D68DE2,$DBDF89E1BA225CA5
   Data.q $842FAA5F48EF75DE,$676F74354AA98FD3,$C4E9AE1F6F043C0C,$878887FEBBAB1DAA,$737A3F63DB5B340B
   Data.q $AFA0DAFA81D3B458,$AA2DAAA54073FA5D,$48F3DDA58AE0F5AD,$C3FAB6F2DE95B6E1,$704E41106299648C
   Data.q $D5AE1F7E81214738,$3EA3E0A0694EEB8F,$77EBA2B36E4D6FAE,$0C07ADE1350FADAC,$E0FA19CEFCE7086C
   Data.q $1ABE98F6BCE76A86,$9E2BAE3304DF5488,$EC0C16CCCC42CD68,$6EA1ACE89DB40E59,$DFEBCF38376BFBB1
   Data.q $716F0099B4FF4CFB,$5980C32081167CC8,$46B46CCF6D0D0817,$3A2142C5196FBAB3,$D3A8BBDAB7460721
   Data.q $BB96B67C82CFCF19,$96EC5F40740BE1F8,$BC8BF5597601A297,$EB4FFD6555B58EBD,$628FFD26C57DBF0C
   Data.q $6E98102833BED97B,$6C99CFEE0A0C1F55,$649A971424943FC5,$8B39CE41BA895B75,$173D0C1D1CC30FFC
   Data.q $4549000000005038,$826042AE444E
girl2end:
EndDataSection
Egypt my love
Locked