timmy2

Trying to display text with a transparent BG atop a Veeblefetzer

4 posts in this topic

#1 ·  Posted (edited)

The following demo script, drawn largely from examples by @UEZ, lets me display colored text over a transparent background using my choice of font, type size, etc.  It is a single function (out of many) in the project I'm scripting, but it is crucial to my goal of displaying messages in an interesting way (IMHO).  

(For the purpose of this forum post it displays a single string variable; my actual project script reads a number of  possible messages from a text file into an array and then chooses the messages to be displayed based on stuff that happens in the course of someone using my program.)

Note that I am seeking help only to overcome my inability to figure out how to display this text atop a PNG graphic, and make the result a draggable object.

 

#cs
Display a message one character at a time
with the goal of adding a PNG graphic overlay

#ce

;~ #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6


#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <GUIConstants.au3>

Global $sMessage
Global $iString = 0
Global $aInfo
Global Const $SC_DRAGMOVE = 0xF012

HotKeySet("{Esc}","Close")

; in my actual script I read in a file containing all the text to be displayed

Global $sText = _
"Lorem ipsum dolor sit amet, consectetur" & @CRLF & _
"elit, sed do eiusmod tempor incididunt ut" & @CRLF & _
@CRLF & _
"Et dolore magna aliqua. Ut enim ad minim," & @CRLF & _
"quis nostrud exercitation ullamco laboris nisi" & @CRLF & _
"aliquip ex ea commodo consequat." & @CRLF & _
@CRLF & _
"Duis aute irure dolor in reprehenderit in" & @CRLF & _
"voluptate velit esse cillum dolore eu fugiat" & @CRLF & _
"nulla pariatur." & @CRLF


; Create GUI

Global $hGUI = GUICreate("", 450, 340, -1, -1, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST))

GUISetBkColor(0xFF000000) ; will change background color, which UEZ doesn't use in his example, but then he doesn't want a BG

GUISetState(@SW_SHOW)

; Draw a string
_GDIPlus_Startup()
Global $hBrush = _GDIPlus_BrushCreateSolid(0xFF99ff33)
Global $hFormat = _GDIPlus_StringFormatCreate()
Global $hFamily = _GDIPlus_FontFamilyCreate("VT323")
Global $hFont = _GDIPlus_FontCreate($hFamily, 14, 0)
Global $tLayout = _GDIPlus_RectFCreate(20, 20, 0, 0)
Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
Global $hBitmap = _GDIPlus_BitmapCreateFromScan0(420, 300)
Global $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)

  _GDIPlus_GraphicsSetTextRenderingHint($hBuffer, 4)
  _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 4)

GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN")


For $iString = 1 to StringLen($sText)
    $sMessage = StringLeft($sText,$iString)
    $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $sMessage, $hFont, $tLayout, $hFormat)
    _GDIPlus_GraphicsClear($hBuffer, 0x000000)
    _GDIPlus_GraphicsDrawStringEx($hBuffer, $sMessage, $hFont, $aInfo[0], $hFormat, $hBrush)
    $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
    _WinAPI_BitmapDisplayTransparentInGUI($hHBitmap, $hGUI)
    _WinAPI_DeleteObject($hHBitmap)
Next

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Close()

; Clean up resources (my best guess at what needs closing/shutting down)

Func Close()
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ImageDispose($hBitmap)
    _GDIPlus_Shutdown()
    Exit
EndFunc   ;==>Close

Func _WinAPI_BitmapDisplayTransparentInGUI(ByRef $hHBitmap, ByRef $hGUI, $iOpacity = 0xFF, $bReleaseGDI = True)
    If Not BitAND(GUIGetStyle($hGUI)[1], $WS_EX_LAYERED) = $WS_EX_LAYERED Then Return SetError(1, 0, 0)
    Local $tDim = DllStructCreate($tagBITMAP)
    If Not _WinAPI_GetObject($hHBitmap, DllStructGetSize($tDim), DllStructGetPtr($tDim)) Then Return SetError(2, 0, 0)
    Local $tSize = DllStructCreate($tagSIZE), $tSource = DllStructCreate($tagPOINT), $tBlend = DllStructCreate($tagBLENDFUNCTION)
    Local Const $hScrDC = _WinAPI_GetDC(0), $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC), $hOld = _WinAPI_SelectObject($hMemDC, $hHBitmap)
    $tSize.X = $tDim.bmWidth
    $tSize.Y = $tDim.bmHeight
    $tBlend.Alpha = $iOpacity
    $tBlend.Format = 1
    _WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, DllStructGetPtr($tSize), $hMemDC, DllStructGetPtr($tSource), 0, DllStructGetPtr($tBlend), $ULW_ALPHA)
    _WinAPI_ReleaseDC(0, $hScrDC)
    _WinAPI_SelectObject($hMemDC, $hOld)
    _WinAPI_DeleteDC($hMemDC)
    If $bReleaseGDI Then _WinAPI_DeleteObject($hHBitmap)
    Return True
EndFunc

Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
    Switch $hWnd
        Case $hGUI
            _SendMessage($hWnd, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
    EndSwitch
EndFunc   ;==>_WM_LBUTTONDOWN

 

The above script lets me push the text out to the screen, but I want to display the text atop a PNG graphic, which is an imagined piece of hand-held test equipment that I'll refer to here as the Veeblefetzer.

Here's a half-size animated gif of the desired result.

aniGif of tester (half-size).gif

 

Note that initially I used a different script to stream the text out atop a built-in black background rectangle.  I figured I would place the Veeblefetzer graphic above the text -- with the center "display area" of the Veeblefetzer cut out (transparent).  

Then UEZ's example script came along. The benefit of using text that has a transparent BG, and placing it in a layer above the Veeblefetzer, is this lets me include reflections in the Veeblefetzer's display.

Now to the challenges I'm ill-equipped to figure out.  

The function I use to display the Veeblefetzer is below. It, too, is drawn from some of examples by @UEZ.

There are actually two functions below, one I use to display the PNG graphic, and one that can be used to fade the graphic in or out.  I include it here only because it might be applicable to my ancillary goal of needing to clear the text on the handheld display before streaming the next message onto the Veeblefetzer's display.  I realize that the fade in/out function is for graphic objects, so it may not be applicable to text. 

 

; Display the image at center unless otherwise specified. If Fader will not be used then $iAlpha's default of 0xFF is good.
; If Fader will be used then start with $iAlpha equal to zero.  Option to make this image "Always on top" is also available.
Func DisplayImage($sFile, $iPosX = -1, $iPosY = -1, $iAlpha = 0xFF, $bTopmost = True)
    Local Const $hBmp_Background = _GDIPlus_BitmapCreateFromFile($sFile) ;load the image
    If @error Then Return SetError(1, 0, 0) ;image cannot be loaded
    Local Const $iW = _GDIPlus_ImageGetWidth($hBmp_Background), $iH = _GDIPlus_ImageGetHeight($hBmp_Background) ;get the dimension of the background image
    Local Const $hGUI = GUICreate("", $iW, $iH, $iPosX, $iPosY, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST * $bTopmost, $WS_EX_TOOLWINDOW)) ;create GUI with appropriate styles and extented style (borderless transparent GUI)
    GUICtrlCreateLabel("", 0, 0, $iW, $iH, Default, $GUI_WS_EX_PARENTDRAG) ;create a hidden label for GUI dragging
    GUISetState(@SW_SHOW, $hGUI) ;show GUI

    Local Const $hBitmap = _GDIPlus_BitmapCreateFromScan0($iW, $iH) ;define an empty bitmap where all the gfx stuff will copied to
    Local Const $hGfx = _GDIPlus_ImageGetGraphicsContext($hBitmap) ;get the context to the bitmap to be able to copy / draw to the bitmap
    _GDIPlus_GraphicsDrawImageRect($hGfx, $hBmp_Background, 0, 0, $iW, $iH) ;draw background image to the empty bitmap

    ;display GDI+ with transparency on desktop
    Local Const $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap) ;convert GDI+ image to GDI to display it on the screen using GDI functions
    Local Const $hScrDC = _WinAPI_GetDC($hGUI) ;get the device context (dc) handle of the GUI
    Local Const $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC) ;create a compatible dc handle
    Local Const $hOld = _WinAPI_SelectObject($hMemDC, $hHBitmap) ;selects the GDI bitmap object into the specified device context
    Local Const $tSize = DllStructCreate($tagSIZE) ;create a $tagSIZE struct (x = width, y = height)
    DllStructSetData($tSize, "X", $iW) ;set data for width
    DllStructSetData($tSize, "Y", $iH) ;set data for height
    Local $tSource = DllStructCreate($tagPOINT) ;create a $tagPOINT struct (x = x position, y = y position)
    Local $tBlend = DllStructCreate($tagBLENDFUNCTION) ;create $tagBLENDFUNCTION struct -> see help file for more info
    DllStructSetData($tBlend, "Alpha", $iAlpha) ;set the alpha channel of the GUI -> 255 = opaque, 0 = transparent
    DllStructSetData($tBlend, "Format", 1) ;set the format to 1 -> bitmap has alpha channels
    DllCall("user32.dll", "bool", "UpdateLayeredWindow", "hwnd", $hGUI, "handle", $hScrDC, "ptr", 0, "struct*", $tSize, "handle", $hMemDC, "struct*", $tSource, "dword", 0, "struct*", $tBlend, "dword", $ULW_ALPHA) ;display bitmap on screen

    ;release resources otherwise memory will filled up (memory leak)
    _GDIPlus_GraphicsDispose($hGfx)
    _GDIPlus_BitmapDispose($hBitmap)
    Local $aResource[7] = [$hGUI, _ ;GUI handle
                           $hScrDC, _ ;device context (dc) handle of the GUI (GDI)
                           $hHBitmap, _ ;GDI bitmap handle of the displayed image
                           $hMemDC, _ ;compatible dc handle from $hScrDC
                           $tBlend, _ ;tBlend struct (source blend oper., flags, alpha value, format) -> see help file for description
                           $tSize, _ ;tSize struct (width and height of the window / image)
                           $tSource] ;tSource struct for x / y position of the GUI
    Return $aResource ;returns the handles to release it later or to use it for fading effects
EndFunc   ;==>DisplayImage

; This function releases the resources of a specific image and closes it
Func ReleaseResources(ByRef $aResource)
    If Not IsArray($aResource) Then Return SetError(1, 0, 0)
    If UBound($aResource) <> 7 Then Return SetError(2, 0, 0)
    _WinAPI_ReleaseDC($aResource[0], $aResource[1])
    _WinAPI_DeleteDC($aResource[3])
    _WinAPI_DeleteObject($aResource[2])
    GUIDelete($aResource[0])
EndFunc   ;==>ReleaseResources

; To fade in an image leave $bIn at default (True); to fade out specify False.
; There are also options to set the ending transparency level (0 transparent, 255 opaque), speed and delay.
; If you change the speed or delay be sure to specify $bIn and $iTrans, otherwise you'll wonder why the fade-in or out isn't what you hoped for.
; The default values are specified in the function below.
Func _Fader($res1, $bIn = True, $iTrans = 255, $speed = 3, $delay = 10  )
    If Not IsArray($res1) Then Return SetError(1, 0, 0)
    If UBound($res1) <> 7 Then Return SetError(2, 0, 0)
    Switch $bIn
        Case True
            For $a = 0 To $iTrans Step $speed
                DllStructSetData($res1[4], "Alpha", $a)
                DllCall("user32.dll", "bool", "UpdateLayeredWindow", "hwnd", $res1[0], "handle", $res1[1], "ptr", 0, "struct*", $res1[5], "handle", $res1[3], "struct*", $res1[6], "dword", 0, "struct*", $res1[4], "dword", $ULW_ALPHA) ;display bitmap on screen
                Sleep($delay)
            Next
        Case Else
            For $a = $iTrans To 0 Step -$speed
                DllStructSetData($res1[4], "Alpha", $a)
                DllCall("user32.dll", "bool", "UpdateLayeredWindow", "hwnd", $res1[0], "handle", $res1[1], "ptr", 0, "struct*", $res1[5], "handle", $res1[3], "struct*", $res1[6], "dword", 0, "struct*", $res1[4], "dword", $ULW_ALPHA) ;display bitmap on screen
                Sleep($delay)
            Next
    EndSwitch
EndFunc   ;==>_FadeIn

 

Is anyone willing to step in and show me how to use the text display function along with the PNG display function, so that the resulting Veeblefetzer will be a single draggable object on screen?

I'm equally baffled about how to properly clear off one message before displaying the next.

The reason?   I have only the most rudimentary grasp of the commands within -- or the relationships between -- what seem like three distinct sections common to each of UEZ's scripts:

Initialization (which defines a number of attributes, some of which are obvious to me, for text in this case)

_GDIPlus_Startup()
Global $hBrush = _GDIPlus_BrushCreateSolid(0xFF99ff33)
Global $hFormat = _GDIPlus_StringFormatCreate()
Global $hFamily = _GDIPlus_FontFamilyCreate("VT323")
Global $hFont = _GDIPlus_FontCreate($hFamily, 14, 0)
Global $tLayout = _GDIPlus_RectFCreate(20, 20, 0, 0)
Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
Global $hBitmap = _GDIPlus_BitmapCreateFromScan0(420, 300)
Global $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)

  _GDIPlus_GraphicsSetTextRenderingHint($hBuffer, 4)
  _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 4)

 

Delivery... (apparently what's needed to display the text)

$aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $sMessage, $hFont, $tLayout, $hFormat)
    _GDIPlus_GraphicsClear($hBuffer, 0x000000)
    _GDIPlus_GraphicsDrawStringEx($hBuffer, $sMessage, $hFont, $aInfo[0], $hFormat, $hBrush)
    $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
    _WinAPI_BitmapDisplayTransparentInGUI($hHBitmap, $hGUI)
    _WinAPI_DeleteObject($hHBitmap)

Even at my primitive level of understanding I have figured out that you can reuse the above "delivery" section to display other strings before proceeding to the next section.

 

Cleanup... (apparently needed to release resources, which to me is like closing a previously opened file: it's part of the process so I'll do it):

_GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ImageDispose($hBitmap)
    _GDIPlus_Shutdown()

 

(You're getting an inside look at a monkey brain at work here!)

UEZ's script to display the PNG graphic follows a similar pattern. What I cannot figure out is how to merge the two scripts, while avoiding redundancy and conflicts. To clear the text between messages must I release any resources, and if so: which ones? AND, how do I group the PNG graphic with the text so the resulting "object" can be moved around on the screen?

 

 

Edited by timmy2
clarification

Share this post


Link to post
Share on other sites



After 29 views but no answer I wonder if and where I screwed up. I'm not writing a bot, nor am I asking for someone to write my script.

I started the "output to display" phase of my project with this post because I accidentally discovered that AutoHotKey appears to have a single, simple function for displaying text with user-specified font, size, color, transparency, etc.

I wondered if Autoit has a similar function.

I've already got a lot of interest and time invested in Autoit -- and an almost finished project script, so I wondered if we have anything as easy to use for displaying text and graphics (see my original post above for details).

My impression at this point is that we do not -- or at least I cannot find it. Instead we have numerous _WinAPI and _GDIPlus commands, which are probably infinitely powerful, but are not nearly as accessible to the occasional "programmer" as most of what Autoit has to offer.  (think of how much code _ArrayDisplay replaces!)

Am I wrong?  If I've chosen the wrong approach -- within the confines of Autoit -- to display text atop a graphic (per my goals) please tell me.

Share this post


Link to post
Share on other sites

Isn't it the same probem as already posted in:

 

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

Here something to play with

#cs
Display a message one character at a time
with the goal of adding a PNG graphic overlay

#ce

;~ #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6


#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <GUIConstants.au3>

Global $sMessage
Global $iString = 0
Global $aInfo

HotKeySet("{Esc}","Close")

; in my actual script I read in a file containing all the text to be displayed

Global $sText = _
"Lorem ipsum dolor sit amet, consectetur" & @CRLF & _
"elit, sed do eiusmod tempor incididunt ut" & @CRLF & _
@CRLF & _
"Et dolore magna aliqua. Ut enim ad minim," & @CRLF & _
"quis nostrud exercitation ullamco laboris nisi" & @CRLF & _
"aliquip ex ea commodo consequat." & @CRLF & _
@CRLF & _
"Duis aute irure dolor in reprehenderit in" & @CRLF & _
"voluptate velit esse cillum dolore eu fugiat" & @CRLF & _
"nulla pariatur." & @CRLF

;MsgBox (1,"test", $sText)

; Create GUI

Global $hGUI = GUICreate("", 800, 465, -1, -1, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST))
; UEZ's example uses the following instead:
; Global $hGUI = GUICreate("Parent", $iW, $iH, -1, -1, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST)

GUISetBkColor(0xFF000000) ; will change background color, which UEZ doesn't use in his example, but then he doesn't want a BG

GUISetState(@SW_SHOW)

; Draw a string
_GDIPlus_Startup()
Global $hBitmap_Bg = _GDIPlus_BitmapCreateFromMemory(_BG())
Global $hBrush = _GDIPlus_BrushCreateSolid(0xFF80F033)
Global $hFormat = _GDIPlus_StringFormatCreate()
Global $hFamily = _GDIPlus_FontFamilyCreate("ARIAL")
Global $hFont = _GDIPlus_FontCreate($hFamily, 12, 0)
Global $tLayout = _GDIPlus_RectFCreate(230, 100, 350, 245)
Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
Global $hBitmap = _GDIPlus_BitmapCreateFromScan0(800, 465) ; UEZ used ..CreateFromScan0 (?)
Global $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)

; UEZ's Example used the following commands that are not in my script, and I cannot figure out which ones are
; applicable to my goal vs the goal of his example, which was to display a live digital clock

;  _GDIPlus_StringFormatSetAlign($hFormat, 0)
;  Global $hImage = _GDIPlus_BitmapCreateFromScan0($iW, $iH) ; must achieve something other than CreateFromHWND
  _GDIPlus_GraphicsSetTextRenderingHint($hBuffer, 4)
  _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 4)


For $iString = 1 to StringLen($sText)
    $sMessage = StringLeft($sText,$iString)
    $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $sMessage, $hFont, $tLayout, $hFormat)
;~     _GDIPlus_GraphicsClear($hBuffer, 0x000000)
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $hBitmap_Bg, 0, 0, 800, 465)
    _GDIPlus_GraphicsDrawStringEx($hBuffer, $sMessage, $hFont, $aInfo[0], $hFormat, $hBrush)
    $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
    _WinAPI_BitmapDisplayTransparentInGUI($hHBitmap, $hGUI)
    _WinAPI_DeleteObject($hHBitmap)
Next

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Close()

; Clean up resources (my best guess at what needs closing/shutting down)

Func Close()
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ImageDispose($hBitmap)
    _GDIPlus_ImageDispose($hBitmap_Bg)
    _GDIPlus_Shutdown()
    Exit
EndFunc   ;==>Close

Func _WinAPI_BitmapDisplayTransparentInGUI(ByRef $hHBitmap, ByRef $hGUI, $iOpacity = 0xFF, $bReleaseGDI = True)
    If Not BitAND(GUIGetStyle($hGUI)[1], $WS_EX_LAYERED) = $WS_EX_LAYERED Then Return SetError(1, 0, 0)
    Local $tDim = DllStructCreate($tagBITMAP)
    If Not _WinAPI_GetObject($hHBitmap, DllStructGetSize($tDim), DllStructGetPtr($tDim)) Then Return SetError(2, 0, 0)
    Local $tSize = DllStructCreate($tagSIZE), $tSource = DllStructCreate($tagPOINT), $tBlend = DllStructCreate($tagBLENDFUNCTION)
    Local Const $hScrDC = _WinAPI_GetDC(0), $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC), $hOld = _WinAPI_SelectObject($hMemDC, $hHBitmap)
    $tSize.X = $tDim.bmWidth
    $tSize.Y = $tDim.bmHeight
    $tBlend.Alpha = $iOpacity
    $tBlend.Format = 1
    _WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, DllStructGetPtr($tSize), $hMemDC, DllStructGetPtr($tSource), 0, DllStructGetPtr($tBlend), $ULW_ALPHA)
    _WinAPI_ReleaseDC(0, $hScrDC)
    _WinAPI_SelectObject($hMemDC, $hOld)
    _WinAPI_DeleteDC($hMemDC)
    If $bReleaseGDI Then _WinAPI_DeleteObject($hHBitmap)
    Return True
EndFunc

;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2015-09-19

Func _BG($bSaveBinary = False, $sSavePath = @ScriptDir)
    Local $BG
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '9uxZnEQbX0skUGXN603Ep2a56nK9Ho01odP/i58zQNDPKwFyKAeQIkPtJ+Flhga9wAcL+LZv36ubfFsGhCIQCkGwTmorAqIpUwXlmu1+nzGTSuMQWNl/BYSJitVMZamiLDY7lqL0mhqco9JQXPLBNQJEdhqKKFuWB4gqSN8PDzI9PTpoc/M4bO/qVbN4pmfSC6XTSPD6J0SZO17YEomulUyaLG08LMJyO9tHOmGitvD4We+m7rBqP3jpWxA7vsTKRedLjj0nHa8ezWSCbrfbJ9HRrxsePjUeT41JSkpKxbs6eiKNjRPtsRGbkxNn13via2PJRJ7syTQpkaCUMnb75/ZE0m63J5PL50//GNKfttrmZt544y84N/s6C9IZIHwuIBSkD0mIgA+mTUACrTWFhbRXLAMEQ7kXFUC2LiHabl22Q5bibrS1Ve4oH5DNEF394Urgon0kt7t4c6rKxU1AKgFIccPhK9dmhh49AiBZQuShkLJhNSDSXKwPgAd0aP9Ee2hmeibUftBYThDqN8KXlpJkMEz2zyE7y8CY7CwDw0okkEkkk4m1s1Nnmn2+xZFYbCQSGRnpieMuVcUbXpB3J4Khl7Fg/vyi6BOC87tKjh59Lj4s0Y8yvFtAw2qAzqiRjo/14t9meNiRJJLxjo7I4GDM74811tWK4fGpNdwGAIrod6VEqi2LbrAkObShxzb4RXqTLTY688tz/u4rPwMgiNFPvKnxIA/6dUNQGQGyc6/sQfAlD0zO9cKDlLKV6AyQ4otbiQ/tmLlmaEL2IOpstvGkKdeOe2iuVQUap6OdNdwgexC0sWgk5C0GCMMD5siGC1kgossC0tDAJivihHwZkOMT3aHRc6OhRifr59cLN/6YYlZHBmiXlGQZjZIEyNrkmXuCbzXgjw0OBiIdHWv5tRI/xJHIf8KGtWhyLYrO6Dz0HIQcsUQzH2XciHaAxxQcA5T0EiCJRHIMKbS2BhcSmJu7GQqB9dr3wqgnKetECCekyRQeQR6ZpdQYuMGnoTjdcv5vRaTquvbQqL8rEIh1Y+dRAII21k9UMQh5EMJDmY+1CQjNxTpwaa7XAECUUZAKAIJ5d6QXY7cvciidBRDqOENRzjCGUgPKWf2Rt+/iMwBR48DYygl4tICAkIs1DJDK7xIgu/cDEBaDQGxAhI0WQsMsSC8EH8UApL62dx8AQQhCgOw7/nos4PeHYr0OVKGfgnf7lsaIjlRKbqSMbWYICbI1Eq5QhzDqAiDoGPX7/XODgY4uatiT2CPMjJ/ACluoT3Rg9qTg5nnP/LHn4QMNrFpxYLhMl15a+t3jx5/df5JKp1Mw7NTSUoqpC7p5kw7sx1ke985MIgK5dCn1MKXo4cM+EPFQI+kTliYHnuqLaBzH3RoLDUbW1+WBQgiTFbWA6DYB0dGiEPBBTnL7zpaP53pd0lw5hIhsGIQA+b8Rkm9I0IsDBO5A60rU0sbSSl5NCGWf9b3UT8rIKE9qAdm2+y2axwApgEhB+ksyIIwQCRBlHKShGB5Eb2o6ToCQaLr7RGvrSKQnEJuwlLJGozN2ru8hRAYli2iBeZFwlZTemZLJf/R1rIpiT9+5vj5/IBBYkm1WqTL25P79zx4/SSXufK9saGBWFKy80VNy7H/mA+GHIP6bvTMMiuq64riulQZitVWa1ta4iK1oQGVVLK4K0YAxZdzARhTyZNdnFkRbMbHrpuLqg9Q+97lrgIYimBfbcV0oRhZxm7LpKOI24yyxsZmMjl/SD051kk/5kpl87v/cu4+3Czu4VO2k0/xH39593vfww/nNOeeew734LdeCd89+EVFUf1+fqEaCwUgkFIp4SV9GJEl2OYKuxtOnG5FP2apbHR+5ZEmy2+0ShKs+Hiu65fW22Z5mPnZZ3qlTNwZLSkpsxbxZETHW0O+TAaKJVdLJbU+f/sT3Nu1oyAMgvJMXfGwmQDQXAj0aKEBcXJ0giSHpemzE6O5AZ3O8G9FvJtbO9URFRyARkOSr'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= 'gIQMI1kBQC61uEY/CwBypCaS3XYFIAIiAOTWaCUA4R6El3kByOplByQECC/zxvAQy3aLGoOMkMRIGK/0MkDCgnKQD3cye/3HadpJb2mAEPT582VlBXZI6GAiq509uzAMK46JmncHINJYAgSTwVleXX3jy9k3AiD1NkwNMw+CVeD1CwCBuA0B4qibeAFAWNJiHpxXZ5HO7cgeRH0ARIxp3F1xcTkZGYYR7BN2kMbU7so2O1wJC7d8gNwVABmuDPYgbFSBJ+pk5EGmRit3KwKAYFgRoyYrpcobAkTGAGnx3JrihLDyFfcgMChMUZk3yIOQ5RMgtD+Hcw0Y5TUaje1QusW4OypYajw8GRnfdnWxQV7xgBiy0NYYP/P5yxlUpQiQG/Ue6PQoDNY9CzyIhAHiRoWJQqwJwYP820mzVqFQUx3LuseJ/ow4QIohTQLZK5Uc9FZnZcGNnCOZKRAChULLMCIslC+a/KMmBIi/D6I/iK0bnn4IiERFPZ/6b8xiqdBJT/EBwsq8yw9ICJBAiNXCGoWwQBZCllhzJPnthakAIDzEwrQ7rYO0teNwgUlLO+lpR4qtkM9RJSGT5SKeYkOseIzMen8/fqaxHw/8jwBkorHeZvIDErYYkCzFoMlhNvY2Mw+CJN2MLRV9GgBRwYNQa1GMAUt2Qd6JoUgrknV1B2kV4riJvaAKGyE48kKAYOSZkvRL6U9rAoBY9aOJUJng+Xkkr2ZFPY8qt1MVS8IbhWtWGCAhQCIiNtJOOs1hCWTgNQDI4UWAPHgAQO7fsxyzCIBcrmz3YJ2QfU0XbxqRy51Mj1z2MwCSBECUXlhrfXdtMwNk6Ivu+jOO8UEAAhWrRTkIAFF7TabH5oLjQpn3RbdxYKCQAaK5FksibaIA6drDdArJiVjdyiy1ulCrNZ1ob0ejtODqxzhljXH3nQTI3UWAqPStFZFcYQICRQIgUZHlxnZFsnR9DFWxCJCcuJUTYoUAgTOPY1dNntOgYrAh6Lp5eJd/1CQ1zw/Ig/vDuce2WNhCYZvLZoPALdICHseg3aCiuUB5V454QDZDqt/rnfc6AMgTFmINNbiMZsiyq+P3yZ2o8wbNYvkAcZj9gDyp7TSaB7Kz9WpDMTVCRB5t2BiN2PFbt5tPYhUO4jIWzF5AVgah9M6q8+mXAAgRUvKHACBSARAmlBoJLMK5AZYPbhjV68KwBIZGCAcEjcKVBUgIEMet56veBch3Pg8SAAQGQO7lboEONI6llXU31rnsl5mCp0JRWKiGGaiIZc3J2LHjZwAEM17eQc/X3V8MESCTzQ0FDBCFcl9SbPDjTl3AmLFqNY5VAZBe7nGeFAGQx60ARM0BEZODxGVmxnUhQ9+RpdbCTDYPZR9t9qrjMOjc9vZ2Xt2SfhEhFg0rltBO+p1FgKB2xQHhhISvvfHsF9CqkyWADw4IVG7PrpQqVijE2rrxny9axm9FLQQkEfYuQOBCHuTfH7ZABroB1jsx0dmJCi8tFeK6iQm5COpYGSj1dLlR8MkRk6QjxIrXZ9/J1ulsAGTGD0h7u81UqEy95lwEyHvrVdVqLfiwuTgg5EFcaO579Xq1UoP/IabMmyCDjVndUIFGZLUdgRUr3dEN62nkHi0Uc6ZbCBAaNCEPYnn6FiAjLMSCBTwI8hEAUgbn9xYgXei3rBBAQoDwcXeLIxGFlcWA1AQBUhrkQY5NT2PlFoQ0IM4iQOzwI0+3m3Q4rmioHktJQKAOofSlAkJCoLFJqQTInVaHrdHnQYZ64UHMaKYrNyU76YTiAkDGDAqd2dzu8gPS3/21zaQrLAQgVrkoQBIE4V0nKegUZ3VoqRUCg1Q6a6q31PY3F13IzQUgVMOi27wWhFixgU46AQIoSCQV2yDMVoV/WlfQIZciZ0uhCEsQ8Vw5fZBQFQuAfAxAuLxUgA+q9t6iYcVgQJp4FYsAQaOwiI2XtFXu3Q47QQpThWnb4otHrjnZRqxEum6pqTppyMQmpyrVXhDy2NzY'
    $BG &= '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'
    $BG &= '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'
    $BG &= 'bJxPJAApoQoIAwNN76xUWL28uSsxhnZCQkFos+LJIK4gjj8OQOweBAqyABD2LwdErtAuBAT5mVetA0gdq/qNXiLLzWL2+OTNmzcrBgqfiugQN2stAckEIBMAhATkbcTZszN4YwEQmkxX73rOSoCAEOZBhEnXErwR6QRISWUl041qSvaaAFERIEtJQggQVwaILcO+vNoMyCYA8joAeQz3jviJQjKS+MQA8V4AyObUzaQga96xBiAoi2OfDlp5uYBAE/DGAiCGAaYgiIcAiUmrmca9jsnjp8AHgkzIJQNsPXab6NTsxSj1E8s4Z1aQjNORBAiFT2yIJSDOCPpAgGTEyLSlBAileX8sgNibFc2ADLz+u8WraKRQ1NOp1IulWCcoi/UoQGhgygoK4h2Gqh8AeWO0Ed93rghHj25tm7w5YRioS4cHeRQgyHgRIGffZiESvXoQcqUzJAdnfawIyLc7M8YjOwQg8pyQThMgHi7ciVA012TEaLVNApCgoE0ABMVZ24Xdg7jGWQKSbDxIaV5x02UZ39rkDkDKTIA4WgKCACDSm3QoSHg2+AAg/MXEATlO90haKnqS1P4LAFGGvv/ywca2tjZYFjMgMCHYr31gvy4qFoA0SW7SCRAEPUTLdX8wARIa3gkLUrKc8eHiQYFkLwdEQVks4EGFQngQ216YsiuIGRDeiwVAlhEgzuyKDtV6wQkKheKJpbBI825mgYlCiQGhvI+/+i8ApKjoxqU2EyC/OArX3dYGQHJrFwCCVvSnMgwA5PjM7IcCENh6XBoFIa37O5EZlqtU1gCECJnjvVh+DBAxclvNDDrQWIT/XFzoM3tiKbQECAj5MQBiB8STA4KTSQKQtaQg1dXsqgufSceqd5MHUTgtAKRh5zaJAdGi6qcex6zt9A0CZBaKwIIWMUxONhrq+mr9FgLi5zDU0tg2MzNzCoBc5RKCqcLpUcP11ubL6aQgMut4EAAyxwAx78UiQBgfiHXrnli0yMWDurHevJYRI1eY2t3ZAR2FzQqF9pChaMuv3HqaANnzCQChQLWQAQI8fntCZLEUCwGBB5HYpMP2KHMsADlLiiC+8Pj+5xkyFgCC31Diw2jj5MwsPP3bIgiQ0dHp69eb28djvaUuFJ58PPnv38zx1S8w6c/rLOdBAAh/YBEgS5YsWkSAoBnrIwBC90F4syIBorQZIHY+CBBf36BNrA5iAmSV+abLMtzRgYAIQBSPBGQq+XHJAZEHqHN7igyj92/fps7ct69evcpNxezsTF59RsL3AAIFoWFbEyAfnpq5dOPGbQByefyM93PWBKQ3+vkEs0nHEU80t8OjEyAeSxCLXADI6nUHoCCOKg2/wcaOeKITzVaA2AFxlAEQCLnv0qX8iGeycWjtJ6tWcUCWMUA4IntOxH/NAXFcoCBWASQkoQ6A3Lj7568IkGeeeQaEYITx1MzxtsMDCfn/T0DOHmeA6JsvlxEgKusBYuQK4sRCiZFbZwYI7AdiyRMMkNUEyAa5Y5MAZBMBghNsMlsBYg8nAmQTASKyWFPXAMjq1UJBTNsVYdOxelRksSwBSU3tb0heYw1AdD1FeB3d/eJPsCAckKtHyYQgcwtAtqgePH8gnlgLFKTt0o37t/X6qnZrApKaajLpTAycOvI5IORB1hEheGItZ4C0ZmxAL5a44sl6sUptB4gdDycAQk3VLItVygFZBkBAiMV6XpbPAiDechnvVhQDU8ADfFgHkBwAgir6NCmIAOQqKQh5kMMZUBCaD7RkSiknBWmBSbfwIB/OTl66f+6cHrsbrAcINawBEKMlIHhiARAeTEOeYAXD1T9tzdgoI0A01K4YtHFlnKstFcQOiII8CAARCnKSAbKY+ODDtqKUToD8FwdEZgKkH3wAEOspSJb++rnbdxkgVynIgyCLBQ8Ck656CBDUFh0GDC15d+DS6ReeeYaZ+smbe395rrWmThe1y1tuFQ+CYiq0dq7fcuTWhwBZTe1XIpGFj3Ak1dUA'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= 'rm4BwU1Y8InxLMbVGBBcByEl1nAikHUT16eiXeHwJSUOtcRrdlh7eN3zxPNvGgTFxxUZdCQAlscaNIE93fq0goPvc6vjHnRNJbz3z72xv2XCvexwRP/sO4pAcMkvOqrePTGXDoiTD78+V71v9NGvYhu4bIEB31+ikfk73qGF9oMcLQcZ/rSpoqLiOMetNn18SORoTgw6XcAAP0iUlfWR576+PgTSx0mBX8eOyvogVLTghL8HRDecOgIZBHhsAamNAaErx+vhria7dhnUuJ8XeQAVCLDimH37xXFOhT10AIjTiesg2tKMgaCNrIsc2VlGTJMBibvNunB7aoJKDySNb3jdAQh5m9duFgBI1SfX71/diGUN4gMDfcB2d6lPeiog1sbG42Vl4rHxShhrNE3RCcEw+IkH+MgxGPHvgghGbGgImhjGFaxXiLW1n9bub2/mcFRyeFZsfL5x8zCsgoyGoo9/dyIAQGA68Yu/Pb5jASDtwXDKzYp1/Op/mDv7n7auM46zpMvcAWvpsi3sJXUbFtvZdfw2LizbtaOOS7ahhDobbu6gN+D0eoBxjByTGNG6k2vKaIZMgcVswzUiTiFNlgRvNnFb8QNUpFXZFI1IntRO01RNmjQp+aV/wL7nXF/XFgGlvEj5yvece8+52EZ6Pn7Oufc+5zHFq1RT2YlL+BOCVUPzYLYvSX2IWVdJMouQokuLlCGNWjVyShtM50SraEKmHvXhwyYtqCjDGejvItJ26brywr6OHKJPOUB/pfbCc60HkdlKr2cUQAov8xKPBEB4qVul2otpB32Od+93y69cYVm2/BE21mI71whA9hygHoSEFJZuyINAWwEILTdDW6EFFzLzOXhbBciD+gho3SHWuhQhXAoTYhpQ+BTxIK/97k0fsKBMoMoJcBQA8kMZEHPREOv5Uz/W61trD5qea62FKeWl0+GF3Da7GiuJiBFWIpMHRLtppdNWag1NIlPTrtXWjJXoSfJAjjNrdzdqwQpOQEoQ/KXZk5DCsanU3T9PtB2jgDxz/eInyepuAHKupmZtQNrNAMSdGsx5kGO/aZi4k+3LYCIS8XAc54nH4x6PJ76ywsF96OsSHss5ozXNW8zq2bk5axNHmsGNRc95II4KOxYLSkUcOmWR8zi9kTG2GvT/mxUByOUcIJdxo9Dl0e1SACGLV5MwECKa57bc7XazLB7wjbU4avBMY2kZAeR7R45gRrOJIRa0dfF1CiNb55c2r2IPstYIbEOuCoAc+KrsQUh2kM59o+d9k4CDQAE9QUVj01cBYgAgo/Jl3vkb70SRdpxh1OZWo4ic5bA1bkWtXpEVj3Nqw8f37n1seGsFrWrZ4tCr7K7cuxdPjzjGDhsMxrExY5OF4yxN+CFXUzvkcudbSLBUKnn39uDFS+CDAPL7Dz6ZqugIeLjWdQB5w2SOByquJBfa5HAQEEJcSCqTiTmX/h1wuZAFzYWSFLwo1iUSdcbDwkhabBKvnj59dcgVWeapIhEXUSSyvIy9IuGcXO/S0BDPL/ICL1r0zJxgXQWIlgACQirVIo+IQkUUEPiP6kf2qjQx77OvlO3YueeADAgJut2ziSEWtGUhqEW//dgeRq32A4UIKdWDCIDQNHgUEFzF6vz2S78NFgOCDd4DwVN4FQ6xKk05QEDI0RvnowLDkGwCejG9tBQJJFyuQGJ5sUOWK8L/NzA5magLBCYDiUCAbIkErdA1y6PZ5ezpcdiNlk8d9jEgZmkSrYzILynmBy0vS8EMQmfv3IQDOXRoP3So7WbSXdFxy/PPViSRWkM1f68lgJS7bze/D0D2E0DaXlzI9vVlMn6p40wFiefz+1Fo/H5piMeXqsP/MjJiFYXh8fETQUkKfn75hvgmo1UY4sdWAbI7B4iBAKLK8wGROQjm6N/ShLzPv1KGa2hPFQHyhYcAkMLZA9XDC0jx0QYve+/8dSdW5qX3QSggP/8MEHCBgkjxJffzIIjxPt4w//Z5b9pq/5CfVc/y'
    $BG &= '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'
    $BG &= 'ttrXLooJ0F6TuYrobEQEZ86B8KeG1LDZFQQTjw+EZq9Vn+2qIgeySg5xX5+lCEWo8k5dXwgN8ECdEQLx+9FLfvKO+4RYLKZAghbCLGzKTiOsEM4JvWAcABtHLvEmOTj7Vb+qxDTB414eg5z7IwAxUYLPOtOWNuowtcEorfgsy8fapgNyvucHHBCK0ikKIUDKyz/ngHAPAkoyBEjavx9lYhEg0HYAsi4rv/eI50M91R39JKnmKPgAI4YH2Q9AfkG1eU3FkxwQ1oKt95XvdgzCCURd4kSNtTIFIUPKOQZCYJix2Lym+sdrrKRltgvuePDB/uLD0f/c3NnUVXWwbHI1QPb1WSx7UOjz7ND1KBHCGbOScE6SvQ7tdqgktgBAUBsbgLyQgnAfIYr7yJFPAdJ++09bOSDFbe93/QRBOgT/wYqbMCdCtRU3VHfXvoYpFk94N2MdixLeTdkZ/K1NXRyQDDGZACQdn4kYJDfhQX6Eoj9PHBn8hBdoQCIWuQ9c8TwsKl4NQAoASDYBsoV5EBmAABEAUj8oD997sCBN2GFzaxcSD3VAhNg99DL3XdUNk0xZvwIo/IINF+4M7cw7XlVVZJnsW7WzyOTksT3vdzWd+oAIuUJ8QJyTZNmdaLYDQASgqpGFY+ErFVkdWmx4zCmrrbbCpY1CBgh+Y9aVl8ODFP0L7XKY+6CEXgjFf+BPOCC/ByBZyDPeBELMIMRcsb4gVZvLMCC89DCUSULStaKNp0FYpkkFANmYtfHwEQYIBEBAyDNLyYp6qknper1FoQkbhQBkvG4JEI889rd/PlDH7akZlNfhGBvWwIc2P4YLYeV9yJyNC7tTkN7GlsXxkT1l+y2r9xmEC2nb/TIRcnqBmu8YhKz0II4YB0RRpZlYSJPrUgPE7ogCEHyhhgQgB960oS5WaTHLdTZt+Us7AbIhh/Un3AthjgU+oOe+UP22rZkBsp0IyWeAmD4bQB6pz0xDl3R66jmfWtzmZmf9rvBi72CL4UEACODQa5sAECo9aikuQJd0Csc4IFeXAAl6HAAk5k8VkBoZUboakRCbw7BighyuXMGHbtXxK4g/Rt862/hO18jJy/st/0OjwX1tbaVIg/mo6dSJ04ux4VvcibBZW7KcIczwQiE4EKmhQRIE2RGOg6M1qtIa1qIgcVhTW2vPGdm808sAIQ8y0gQ+IADC+eCA5OQ9l1M9auuDlW3eDEA2UUKvuSL3kaqKBUL+Lz5z40v5EOXybsfzTr96/sxFAoTEAcGBjhBI2dF+sqy4IBsNdPg+SOElAHJkCRCaYkXhQWAeazcoe52saUp/t4tiY4oBNGc8Hl8xDrLG0bhzATuEjTcOIS/ysgWArC4AUtq2G3HI3hMnri3Mjw2wm9vRvaEGOyI1urA3IlAQhIMiBgINkqoIWCzwYkhCeLWawriP5MKujSa11tqMVazpCwyQXSZ9o7CqiediURIW48Mo8P5Uzs3RP/TxVFKIAPm2mQGSWat7LDxSuhwQ84WLv3Xv+DOrPAoqDEqSADFlL20Unrt0pjfhQSTZIaui5HN4YUFrFG1JMJt8562IomhARVVCNGCKiw3CGlY8fiU+4AxFF6+992TT3Ddf/vfBslLGx+o6ZsFIitSRA/Obv1Nb6IFw2Cn7/Aq8xTJFJFLk44/7jx66gf2QCIgVDPHL1aVpgn+wtUEVBClwFICcYTH69PO2D9vfvbzLyOatmmsyPIgBSN4SIPUcENTnreCPhMCFZB6Qx4BQ9zUOSEFW+VensZHOfAYPPjgZnBWcCJCtJjgyHRDbgWWAdIiCPPHToKgKKWmWDDN4qKvRpapqxNMpSYqSbHGKT55Co/Ph+ejif9k735+2yiiOd9O4+YPNOtEtRHfnZup+lP5yIHFtY7wlzrDYavorg6Zpy+2wlk4QSldFwSHqVguMAUEbyE1D51wMRcGVzUwlYS+WqjFL9mJvSvZmCYkv9hf4Pc8t7Qabgi/6im/ocy+3lwbC88k55znP'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= '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'
    $BG &= 'u7bNxHEcvrbQqWMJBFJQ33eJyUmWm0FosHRBNSGddDTWpcYSoSqNl8pQcEKyCaNmahuFQwoZAoFCCBRDCWTr4FC6dAv9V7r3d3Knlq6h2L8HbMgf8OFOBOtLbgT9RCovP5AbgdDSFxj9WP+8I2Lf9rlpSk4anQ48i/ypunEZO8ISOw0Rh2Fq1ju1B+/+612vkOmE0OnqibG+2FN92CGnJpWSUmr9uA1+6+Pu/DwpBGNM36xr8fmaDYXU4PgphmRaITRcPenVGmPoww44ZQwScQOfxKLowf8S1XtI5+buLS4axnqvQYhUfTS1R3W2sLYWcq02bxQemV4InS6dGBDIlu1zSZluth03yI+zwE1jQNVzCaXSceAPzh3K9OWmpmki/v88jDc7xvUqmW4Ib1lFwdLQd52oDSKHu0meZbAzYh+Dfj/Lk4PBIEkD6MPUIRAoRLD4SUpFMQPnB0KWp86IycB6JGEP9LCf7e1tj66uri4uLmD9Zr97kATfuBOpQXJd07RNYTImLItMP4Q8jzGzXQWiSnkLE7lwgoyqQL5DIGf7MLwM47MtGEkD2kS9IDMBIQagkKhtUsdpXX6FnXIIZAL2PM66G4fQx/sWDIaCpqbpOgRCZgRCtCoERCqQy8Mkz4+PRqPtfn7weqPbVYFwmEOEK1ZFF9YsXa8QonTssQhuWVHUaj1zgySBQo76WZl8hEIGg91d7khq6k1NV6yVIZkpCHmMRuSVOkM4cYPAD+28zLIsTwZlGbhcSjoW6kUlszkWi5BH4WvZlFISruZj/aAssy27DHarPNhYAOwDIVWKm0IkZba35XMgx2NPiF+bBAihOE1TFxIJXRk5BHjMZN6QAIQQV+uyaQqfWJIJSilREEIxAWq7bGGBIIT+8qNdQP4d6Cfm7QYA1X39iAAAAABJRU5ErkJggg=='
    Local $bString = _WinAPI_Base64Decode($BG)
    If @error Then Return SetError(1, 0, 0)
    $bString = Binary($bString)
    If $bSaveBinary Then
        Local Const $hFile = FileOpen($sSavePath & "\Bg2.png", 18)
        If @error Then Return SetError(2, 0, $bString)
        FileWrite($hFile, $bString)
        FileClose($hFile)
    EndIf
    Return $bString
EndFunc   ;==>_BG

Func _WinAPI_Base64Decode($sB64String)
    Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "")
    Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]")
    $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($bBuffer, 1)
EndFunc   ;==>_WinAPI_Base64Decode

 

The rest is homework for you. ;)

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Similar Content

    • Blaxxun
      By Blaxxun
      #include <GDIPlus.au3> Text2PNG(@DesktopDir & "\MyPNG.png", 0x00FFFFFF) ; Transparent but bold ugly text ;Text2PNG(@DesktopDir & "\MyPNG.png", 0xFFFFFFFF) ; Nice Text but not transparent Func Text2PNG($sFile, $iColor) _GDIPlus_Startup() Local $hImage = _GDIPlus_BitmapCreateFromScan0(50, 25) Local $hGraphics = _GDIPlus_ImageGetGraphicsContext($hImage) _GDIPlus_GraphicsClear($hGraphics, $iColor) _GDIPlus_GraphicsDrawString($hGraphics, "Hello", 0, 0, "Arial", 12, 0) _GDIPlus_ImageSaveToFile($hImage, $sFile) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_BitmapDispose($hImage) _GDIPlus_Shutdown() EndFunc ;==>Text2PNG  
      Hello ladys and gentlemen,
      I have this piece of code and it does what it's supposed to do.
      I want to use it to create an image sequence with frame/image information for compositing overlay.
      However, when i use a transparent background the text starts to look kinda bold or fat.
      I dont know what causes this ugly effect.
      Is there a way to avoid this effect somehow?
      Thanks!
       
       
    • youtuber
      By youtuber
      $hImage = _GDIPlus_ImageLoadFromFile($aImageSave) $X1 = _GDIPlus_ImageGetWidth($hImage) $Y1 = _GDIPlus_ImageGetHeight($hImage) $X2 = _GDIPlus_ImageGetWidth($hImage) $Y2 = _GDIPlus_ImageGetHeight($hImage) $hGraphic = _GDIPlus_ImageGetGraphicsContext ($hImage) $hGraphic = _GDIPlus_GraphicsCreateFromHWND($Form1) ;$PicPreview = GUICtrlCreatePic("", 24, 152, 572, 268) _GDIPlus_GraphicsDrawImage ($hGraphic, 24, 152, 572, 268);? I have the same size and relative coords to $PicPreview in the image placement form1 I want to be 
       
      Other Responsibility Is there a problem with _GDIPlus code sorting?
      #include <GDIPlus.au3> #include <GuiConstantsEx.au3> #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> Global $Form1, $hImage, $hGraphic, $OpenPictures, $PicPreview _GDIPlus_StartUp() $Form1 = GUICreate("Form1", 615, 438, 374, 347) $PicPreview = GUICtrlCreatePic("", 24, 152, 572, 268) $ButtonPreview = GUICtrlCreateButton("Preview", 520, 112, 75, 25) $InputImageDir = GUICtrlCreateInput("", 64, 48, 177, 21) $ButtonOpen = GUICtrlCreateButton("...", 256, 48, 75, 25) $ButtonWatermark = GUICtrlCreateButton("Watermark Add", 256, 112, 80, 25) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_ImageDispose($hImage) _GDIPlus_ShutDown() Exit Case $ButtonOpen $OpenPictures = FileOpenDialog("Where are the pictures?", @ScriptDir & "\", "Picture format (*.jpg;*.bmp;*.png)", $FD_FILEMUSTEXIST + $FD_MULTISELECT) If Not $OpenPictures Then MsgBox(64, "İnfo","No Files Selected!",5) Else GUICtrlSetData($InputImageDir,$OpenPictures) EndIf Case $ButtonWatermark $aImageLoad = $OpenPictures $aImageSave = @ScriptDir & "\Save.png" $aImageLogo = @ScriptDir & "\Logo.png" _Watermark($aImageSave, $aImageLoad, $aImageLogo) Case $ButtonPreview $hImage = _GDIPlus_ImageLoadFromFile($aImageSave) $X1 = _GDIPlus_ImageGetWidth($hImage) $Y1 = _GDIPlus_ImageGetHeight($hImage) $X2 = _GDIPlus_ImageGetWidth($hImage) $Y2 = _GDIPlus_ImageGetHeight($hImage) $hGraphic = _GDIPlus_ImageGetGraphicsContext ($hImage) $hGraphic = _GDIPlus_GraphicsCreateFromHWND($Form1) ;$PicPreview = GUICtrlCreatePic("", 24, 152, 572, 268) _GDIPlus_GraphicsDrawImage ($hGraphic, 24, 152, 572, 268) EndSwitch WEnd Func _Watermark($sFile2, $sFile, $sLogo) Local $hImage1, $hImage2, $hGraphic _GDIPlus_Startup () $hImage1 = _GDIPlus_ImageLoadFromFile ($sFile) ; image $X1 = _GDIPlus_ImageGetWidth ($hImage1) $Y1 = _GDIPlus_ImageGetHeight ($hImage1) $hImage2 = _GDIPlus_ImageLoadFromFile ($sLogo) ; logo $X2 = _GDIPlus_ImageGetWidth ($hImage2) $Y2 = _GDIPlus_ImageGetHeight ($hImage2) $hGraphic = _GDIPlus_ImageGetGraphicsContext ($hImage1) _GDIPlus_GraphicsDrawImage ($hGraphic, $hImage2, 20, $Y1-$Y2-30) _GDIPlus_ImageSaveToFile ($hImage1, $sFile2) ; image watermarked _GDIPlus_ImageDispose ($hImage1) _GDIPlus_ImageDispose ($hImage2) _GDIPlus_ShutDown () EndFunc ;==>_Watermark  
    • tcurran
      By tcurran
      Here are two functions to provide pixel-accurate height and width dimensions for a given string.
      The more commonly-used _GDIPlus_GraphicsMeasureString built-in UDF is problematic because it returns the width padded by roughly one en-space (for reasons related to the various ways Windows produces anti-aliased fonts).
      These are AutoIt translations of Pierre Arnaud's C# functions, described in his CodeProject article "Bypass Graphics.MeasureString limitations"
      The first is an all-purpose version that takes a window handle, string, font family, font size (in points), style, and (optionally) width of the layout column (in pixels) as parameters.
      The second, more efficient version is intended for applications where GDI+ fonts are already in use, and takes handles to the existing graphics context, string, font, layout and format as parameters.
      Both functions return a two-row array with the exact width [0] and height [1] of the string (in pixels).
      EDIT: (Note that some of the same anti-aliasing measurement issues still apply. I did my best to work around them, but the output of the function may still be off by a pixel or two. Buyer beware.)
      #include <GDIPlus.au3> #include <GUIConstantsEx.au3> ; #FUNCTION# ==================================================================================================================== ; Name ..........: _StringInPixels ; Description ...: Returns a pixel-accurate height and width for a given string using a given font, style and size. ; Syntax ........: _StringInPixels($hGUI, $sString, $sFontFamily, $fSize, $iStyle[, $iColWidth = 0]) ; Parameters ....: $hGUI - Handle to the window. ; $sString - The string to be measured. ; $sFontFamily - Full name of the font to use. ; $fSize - Font size in points (half-point increments). ; $iStyle - Combination of 0-normal, 1-bold, 2-italic, 4-underline, 8-strikethrough ; $iColWidth - [optional] If word-wrap is desired, column width in pixels ; Return values .: 2-row array. [0] is width in pixels; [1] is height in pixels. ; Author ........: Tim Curran; adapted from Pierre Arnaud's C# function ; Modified ......: ; Remarks .......: This version is longer and less efficient but works for all purposes. ; Related .......: <https://www.codeproject.com/Articles/2118/Bypass-Graphics-MeasureString-limitations> ; Link ..........: ; Example .......: Example-StringInPixels.au3 ; =============================================================================================================================== #include <GDIPlus.au3> #include <GUIConstantsEx.au3> Func _StringInPixels($hGUI, $sString, $sFontFamily, $fSize, $iStyle, $iColWidth = 0) _GDIPlus_Startup() Local $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;Create a graphics object from a window handle Local $aRanges[2][2] = [[1]] $aRanges[1][0] = 0 ;Measure first char (0-based) $aRanges[1][1] = StringLen($sString) ;Region = String length Local $hFormat = _GDIPlus_StringFormatCreate() Local $hFamily = _GDIPlus_FontFamilyCreate($sFontFamily) Local $hFont = _GDIPlus_FontCreate($hFamily, $fSize, $iStyle) _GDIPlus_GraphicsSetTextRenderingHint($hGraphic, $GDIP_TEXTRENDERINGHINT_ANTIALIASGRIDFIT) _GDIPlus_StringFormatSetMeasurableCharacterRanges($hFormat, $aRanges) ;Set ranges Local $aWinClient = WinGetClientSize($hGUI) If $iColWidth = 0 Then $iColWidth = $aWinClient[0] Local $tLayout = _GDIPlus_RectFCreate(10, 10, $iColWidth, $aWinClient[1]) Local $aRegions = _GDIPlus_GraphicsMeasureCharacterRanges($hGraphic, $sString, $hFont, $tLayout, $hFormat) ;get array of regions Local $aBounds = _GDIPlus_RegionGetBounds($aRegions[1], $hGraphic) Local $aWidthHeight[2] = [$aBounds[2], $aBounds[3]] ; Clean up resources _GDIPlus_FontDispose($hFont) _GDIPlus_RegionDispose($aRegions[1]) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() Return $aWidthHeight EndFunc ;==>_StringInPixels ; #FUNCTION# ==================================================================================================================== ; Name ..........: _StringInPixels_gdip ; Description ...: Returns a pixel-accurate height and width for a given string using a GDI+ font, layout and format ; Syntax ........: _StringInPixels_gdip($hGraphic, $sString, $hFont, $tLayout, $hFormat) ; Parameters ....: $hGraphic - Handle to a GDI+ graphics object. ; $sString - The string to be measured. ; $hFont - Handle to a GDI+ font. ; $tLayout - A $tagGDIPRECTF structure that bounds the string. ; $hFormat - Handle to a GDI+ string format. ; Return values .: 2-row array. [0] is width in pixels; [1] is height in pixels. ; Author ........: Tim Curran; adapted from Pierre Arnaud's C# function ; Modified ......: ; Remarks .......: This much more efficient version is for use with GDI+ fonts ; Related .......: ; Link ..........: <https://www.codeproject.com/Articles/2118/Bypass-Graphics-MeasureString-limitations> ; Example .......: Example-StringInPixels.au3 ; =============================================================================================================================== #include <GDIPlus.au3> #include <GUIConstantsEx.au3> Func _StringInPixels_gdip($hGraphic, $sString, $hFont, $tLayout, $hFormat) Local $aRanges[2][2] = [[1]] $aRanges[1][0] = 0 ;Measure first char (0-based) $aRanges[1][1] = StringLen($sString) ;Region = String length _GDIPlus_GraphicsSetTextRenderingHint($hGraphic, $GDIP_TEXTRENDERINGHINT_CLEARTYPEGRIDFIT) _GDIPlus_StringFormatSetMeasurableCharacterRanges($hFormat, $aRanges) ;Set ranges Local $aRegions = _GDIPlus_GraphicsMeasureCharacterRanges($hGraphic, $sString, $hFont, $tLayout, $hFormat) ;get array of regions Local $aBounds = _GDIPlus_RegionGetBounds($aRegions[1], $hGraphic) Local $aWidthHeight[2] = [$aBounds[2], $aBounds[3]] _GDIPlus_RegionDispose($aRegions[1]) Return $aWidthHeight EndFunc ;==>_StringInPixels_gdip  
      _StringInPixels.au3
      Example-StringInPixels.au3
    • c.haslam
      By c.haslam
      In the code that follows, it appears that DllStructCreate() is not allocating memory in
      $tag = 'byte val['&$iLength&']' . . Static Local $tvalue = DllStructCreate($tag) Running the code below, the problem does not show, but it does show in a much longer script: there _GDIPlus_ImageSaveToFile only writes about 30K bytes when it should write about 1MB, which it does when the code is
      $tag = 'char val['&$iLength&']' . . Static Local $tvalue = DllStructCreate($tag) It should write about 1 MB.
      I suggest caution in running the code below. On my PC, it caused a second instance of SciTE to appear at the top left of the Desktop, showing only the title bar, with a width of only approximately 200 pixels! Then rebooting the PC showed this at login. Further, double-clicking on the SciTE shortcut on the Desktop showed SciTE in the same way! (After running Regedit, and searching for SciTE, the shortcut behaves normally.)
      I would appreciate help in determining whether or not there is a bug in DLLStructCreate, preferably a way which does not clobber Windows. Of course, It is possible that there is a bug in my code.
      I have made $tvalue Static in the hope that this might make the code run properly. Doing this did not help.
      My code is based on code written by Authenticity and ChrisL.
      #include <GDIPlus.au3> #include <Array.au3> Opt('MustDeclareVars',1) ; Property Item structure Global Const $tagGDIPPROPERTYITEM = _ "uint id;" & _ ; ID of this property "ulong length;" & _ ; Length of the property value, in bytes "word type;" & _ ; Type of the value, as one of TAG_TYPE_XXX constants "ptr pvalue;" ; pointer to property value ; Image property types constants ; Ref: https://www.media.mit.edu/pia/Research/deepview/exif.html Global Const $GDIP_PROPERTYTAGTYPEUBYTE = 1 Global Const $GDIP_PROPERTYTAGTYPEASCII = 2 Global Const $GDIP_PROPERTYTAGTYPEUSHORT = 3 Global Const $GDIP_PROPERTYTAGTYPEULONG = 4 Global Const $GDIP_PROPERTYTAGTYPEURATIONAL = 5 Global Const $GDIP_PROPERTYTAGTYPESBYTE = 6 Global Const $GDIP_PROPERTYTAGTYPEUNDEFINED = 7 Global Const $GDIP_PROPERTYTAGTYPESSHORT = 8 Global Const $GDIP_PROPERTYTAGTYPESLONG = 9 Global Const $GDIP_PROPERTYTAGTYPESRATIONAL = 10 Global Const $GDIP_PROPERTYTAGTYPESFLOAT = 11 Global Const $GDIP_PROPERTYTAGTYPEDFLOAT = 12 main() Func main() _GDIPlus_Startup() Local $hImage = _GDIPlus_ImageLoadFromFile('H:\temp\AP test data\DSC00824 - Copy.jpg') Local $ar = _GDIPlus_ImageGetAllPropertyItemsEx($hImage) Local $propsAr[UBound($ar,1)-1][5],$vec,$j=-1 For $i = 1 To $ar[0][0] If $ar[$i][3]<>0 Then ; pValue -- for Sony! $j += 1 $propsAr[$j][0] = $ar[$i][0] ; id $propsAr[$j][1] = $ar[$i][1] ; length $propsAr[$j][2] =$ar[$i][2]; type $vec = _GDIPlus_ImageGetPropertyItemValue($ar[$i][1],$ar[$i][2],$ar[$i][3]) $propsAr[$j][3] = $vec[0] ; val1 Switch $ar[$i][2] Case 5,10 ; $GDIP_PROPERTYTAGTYPEURATIONAL,$GDIP_PROPERTYTAGTYPESRATIONAL $propsAr[$j][4] = $vec[1] Case Else $propsAr[$j][4] = '' EndSwitch EndIf Next ReDim $propsAr[$j+1][5] For $i = 0 To UBound($propsAr,1)-1 Switch $propsAr[$i][2] ; type Case 5,10 ; $GDIP_PROPERTYTAGTYPEURATIONAL,$GDIP_PROPERTYTAGTYPESRATIONAL _GDIPlus_ImageSetPropertyItemEx($hImage,$propsAr[$i][0],$propsAr[$i][1], _ $propsAr[$i][2],$propsAr[$i][3],$propsAr[$i][4]) Case Else _GDIPlus_ImageSetPropertyItemEx($hImage,$propsAr[$i][0],$propsAr[$i][1], _ $propsAr[$i][2],$propsAr[$i][3]) EndSwitch Next _GDIPlus_ImageSaveToFile($hImage,'H:\b\1.jpg') _GDIPlus_ImageDispose($hImage) _GDIPlus_Shutdown() EndFunc Func _GDIPlus_ImageGetAllPropertyItemsEx($hImage) Local $iI, $iCount, $tBuffer, $pBuffer, $iBuffer, $tPropertyItem, $aSize, $aPropertyItems[1][1], $aResult $aSize = _GDIPlus_ImageGetPropertySize($hImage) If @error Then Return SetError(@error, @extended, -1) $iBuffer = $aSize[0] $tBuffer = DllStructCreate("byte[" & $iBuffer & "]") $pBuffer = DllStructGetPtr($tBuffer) $iCount = $aSize[1] $aResult = DllCall($__g_hGDIPDll, "uint", "GdipGetAllPropertyItems", "hwnd", $hImage, "uint", $iBuffer, "uint", $iCount, "ptr", $pBuffer) If @error Then Return SetError(@error, @extended, -1) If $aResult[0] Then Return SetError(10, $aResult[0], False) ReDim $aPropertyItems[$iCount + 1][4] $aPropertyItems[0][0] = $iCount For $iI = 1 To $iCount $tPropertyItem = DllStructCreate($tagGDIPPROPERTYITEM, $pBuffer) $aPropertyItems[$iI][0] = DllStructGetData($tPropertyItem, "id") $aPropertyItems[$iI][1] = DllStructGetData($tPropertyItem, "length") $aPropertyItems[$iI][2] = DllStructGetData($tPropertyItem, "type") $aPropertyItems[$iI][3] = DllStructGetData($tPropertyItem, "pvalue") $pBuffer += DllStructGetSize($tPropertyItem) Next Return $aPropertyItems EndFunc Func _GDIPlus_ImageGetPropertyItemValue($iLength, $iType, $pValue) Static Local $tvalue Switch $iType Case 1,6 ; $GDIP_PROPERTYTAGTYPEUBYTE,$GDIP_PROPERTYTAGTYPESBYTE $tvalue = DllStructCreate('byte val',$pValue) Case 2 ; $GDIP_PROPERTYTAGTYPEASCII $tvalue = DllStructCreate('char val['&$iLength&']',$pValue) Case 3 ; $GDIP_PROPERTYTAGTYPEUSHORT $tvalue = DllStructCreate('ushort val',$pValue) Case 4 ; $GDIP_PROPERTYTAGTYPEULONG $tvalue = DllStructCreate('ulong val',$pValue) Case 5 ; $GDIP_PROPERTYTAGTYPEURATIONAL $tvalue = DllStructCreate('ulong val1;ulong val2',$pValue) Case 7 ; $GDIP_PROPERTYTAGTYPEUNDEFINED ; undefined, per specification, but may be a long but is sometimes a string $tvalue = DllStructCreate('byte val['&$ilength&']',$pValue) ; see _GDIPlus_ImageSetPropertyItemEx ;~ $tvalue = DllStructCreate('char val['&$ilength&']',$pValue) Case 8 ; $GDIP_PROPERTYTAGTYPESSHORT $tvalue = DllStructCreate('short val',$pValue) Case 9 ; $GDIP_PROPERTYTAGTYPEULONG $tvalue = DllStructCreate('ulong val',$pValue) Case 10 ; $GDIP_PROPERTYTAGTYPESRATIONAL $tvalue = DllStructCreate('ulong val1;ulong val2',$pValue) Case 11 ; $GDIP_PROPERTYTAGTYPESFLOAT $tvalue = DllStructCreate('float val',$pValue) Case 12 ; $GDIP_PROPERTYTAGTYPEDFLOAT $tvalue = DllStructCreate('double val',$pValue) EndSwitch If @error Then Return SetError(@error,0,-1) Switch $iType Case 5,10 ; $GDIP_PROPERTYTAGTYPEURATIONAL,$GDIP_PROPERTYTAGTYPESRATIONAL Local $aRet[2] $aRet[0] = DllStructGetData($tvalue,'val1') $aRet[1] = DllStructGetData($tvalue,'val2') Case Else Local $aRet[1] $aRet[0] = DllStructGetData($tvalue,'val') EndSwitch Return $aRet EndFunc Func _GDIPlus_ImageGetPropertySize($hImage) Local $aSize[2], $aResult $aResult = DllCall($__g_hGDIPDll, "uint", "GdipGetPropertySize", "hwnd", $hImage, "uint*", 0, "uint*", 0) If @error Then Return SetError(@error, @extended, -1) $aSize[0] = $aResult[2] $aSize[1] = $aResult[3] Return $aSize EndFunc ;==>_GDIPlus_ImageGetPropertySize Func _GDIPlus_ImageSetPropertyItemEx($hImage,$id,$iLength,$iType,$value1,$value2=-1) Local $tProp = DllStructCreate($tagGDIPPROPERTYITEM) DllStructSetData($tProp,'id',$id) DllStructSetData($tProp,'type',$itype) DllStructSetData($tProp,'length',$ilength) Local $tag Switch $iType Case $GDIP_PROPERTYTAGTYPEUBYTE,$GDIP_PROPERTYTAGTYPESBYTE $tag = 'byte val' Case $GDIP_PROPERTYTAGTYPEASCII $tag = 'char val['&$iLength&']' Case $GDIP_PROPERTYTAGTYPEUSHORT $tag = 'ushort val' Case $GDIP_PROPERTYTAGTYPEULONG $tag = 'ulong val' Case $GDIP_PROPERTYTAGTYPEURATIONAL $tag = 'ulong val1;ulong val2' Case $GDIP_PROPERTYTAGTYPEUNDEFINED ; undefined, per specification, but may be a long but is sometimes a string $tag = 'byte val['&$iLength&']' ; causes saving to jpeg to write junk ;~ $tag = 'char val['&$iLength&']' Case $GDIP_PROPERTYTAGTYPESSHORT $tag = 'short val' Case $GDIP_PROPERTYTAGTYPEULONG $tag = 'ulong val' Case $GDIP_PROPERTYTAGTYPESRATIONAL $tag = 'long val1;long val2' Case $GDIP_PROPERTYTAGTYPESFLOAT $tag = 'float val' Case $GDIP_PROPERTYTAGTYPEDFLOAT $tag = 'double val' EndSwitch Static Local $tvalue = DllStructCreate($tag) Switch $iType Case $GDIP_PROPERTYTAGTYPEURATIONAL,$GDIP_PROPERTYTAGTYPESRATIONAL DllStructSetData($tvalue,'val1',$value1) DllStructSetData($tvalue,'val2',$value2) Case Else DllStructSetData($tvalue,1,$value1) EndSwitch DllStructSetData($tProp,'pvalue',DllStructGetPtr($tvalue)) Local $aResult = DllCall($__g_hGDIPDll, "int", "GdipSetPropertyItem", "hwnd", $hImage, "ptr", _ DllStructGetPtr($tProp)) If @error Then Return SetError(@error, @extended, -1) If $aResult[0] Then Return SetError(10, $aResult[0], -1) Return $aResult[0] = 0 EndFunc I have seen $iLength be as much as 37 KB for $GDIP_PROPERTYTAGTYPEUNDEFINED.
      Is there is a bug, how can this be demonstrated to the developers in a few lines of code (without clobbering Windows)?
       
    • c.haslam
      By c.haslam
      UEZ has kindly provided me with code that rotates an image per a line: see here
      Because I want to trim a photograph after rotation, I need to crop the photo. I wrote code which calls _GDIPlus_GraphicsSetClipRect() to do this, but it places spurious stuff in the corners: see 2.jpg attached.
      I want only the trimmed photo to show.
      The original jpeg is also attached.
      The arguments to _GDIPlus_GraphicsSetClipRect() come from solving 2 simultaneous equations: if a and b are the width and height of the original photo, find x and y, the width and height of the rotated and cropped rectangle;
      a = x cos(ang) + y sin(ang)
      b = x sin(ang) + y cos(ang)
      My solution is:
      x = (b * sin(ang) - a*cos(ang)) / (sin(ang)^2 - (cos(ang)^2)
      y = (b * cos(ang) - a * sin(ang)) / (cos(ang)^2 - sin(ang)^2)
      To try to get a handle on the problem, I have temporarily added in several lines in Case $btn. In 2.jpg, you can see that the rectangle bounding the area to be retained is in the wrong place.
      The code is:
      #include <ButtonConstants.au3> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> Opt('MustDeclareVars',1) Global Const $MK_SHIFT = 0x4 Global Const $MK_CONTROL = 0x8 Global Const $fPi = ACos(-1), $fPi2 = $fPi / 2, $fRad = 180 / $fPi GUIRegisterMsg($WM_MOUSEWHEEL, "WM_MOUSEWHEEL") GUIRegisterMsg($WM_PAINT,'WM_PAINT') Global $gX0=10,$gX1=580,$gY0,$gY1,$gForm1,$glblPic,$iLW,$iLH,$iW,$iH Global $ghCanvas,$ghImage,$ghPen,$gGraphicPic,$ghBitmap,$ghMatrix,$ghImageClone,$ghGfxClone Global Const $kDegToRads = 3.14159/180 main() Func main() $gForm1 = GUICreate("Form1", 623, 601, 192, 114) $iLW = 589 $iLH = 500 $glblPic = GUICtrlCreateLabel("", 8, 8, $iLW, $iLH) Local $btn = GUICtrlCreateButton("Rotate", 472, 560, 65, 25) GUISetState(@SW_SHOW) Local $oldY0,$oldY1,$fAngle _GDIPlus_Startup() $ghPen = _GDIPlus_PenCreate(0xFF999999,2) $ghImage = _GDIPlus_ImageLoadFromFile('H:\b\pergola.jpg') Local $h = GUICtrlGetHandle($glblPic) $gGraphicPic = _GDIPlus_GraphicsCreateFromHWND($h) $gY0 = 400 $gY1 = 400 $iW = _GDIPlus_ImageGetWidth($ghImage) $iH = _GDIPlus_ImageGetHeight($ghImage) $ghBitmap = _GDIPlus_BitmapCreateFromScan0($iW, $iH) $ghCanvas = _GDIPlus_ImageGetGraphicsContext($ghBitmap) $ghMatrix = _GDIPlus_MatrixCreate() ; Loop until the user exits. While True If $gY0<>$oldY0 Or $gY1<>$oldY1 Then Paint() $oldY0 = $gY0 $oldY1 = $gY1 Else Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $btn $ghImageClone=_GDIPlus_BitmapCreateFromScan0($iW, $iH) $ghGfxClone=_GDIPlus_ImageGetGraphicsContext($ghImageClone) _GDIPlus_MatrixTranslate($ghMatrix, $iW/2, $iH/2) $gY1 = 300 ; temp Local $ang = -Angle($gY1-$gY0, $gX1-$gX0) _GDIPlus_MatrixRotate($ghMatrix, $ang) ;~ _GDIPlus_MatrixRotate($ghMatrix, -Angle($gY1-$gY0, $gX1-$gX0)) _GDIPlus_MatrixTranslate($ghMatrix, -$iW/2, -$iH/2) _GDIPlus_GraphicsSetTransform($ghGfxClone, $ghMatrix) _GDIPlus_GraphicsDrawImageRect($ghGfxClone,$ghImage,0,0,$iW,$iH) Local $angRads = $ang*$kDegToRads Local $sinAng = Sin($angRads) Local $cosAng = Cos($angRads) Local $wid = ($iLH*$sinAng-$iLW*$cosAng)/($sinAng^2-$cosAng^2) Local $left = ($iLW-$wid)/2 Local $ht = ($iLH*$cosAng-$iLW*$sinAng)/($cosAng^2-$sinAng^2) Local $top = ($iLH-$ht)/2 _GDIPlus_GraphicsDrawRect($ghGfxClone,$left,$top,$wid,$ht,$ghPen) ; temp _GDIPlus_GraphicsSetClipRect($ghGfxClone,$left,$top,$wid,$ht,0) _GDIPlus_GraphicsDispose($ghGfxClone) $ghGfxClone=_GDIPlus_ImageGetGraphicsContext($ghImage) _GDIPlus_GraphicsClear($ghImage) _GDIPlus_GraphicsDrawImageRect($ghGfxClone,$ghImageClone,0,0,$iW,$iH) _GDIPlus_GraphicsDispose($ghGfxClone) _GDIPlus_ImageDispose($ghImageClone) $gy0 = 400 $gy1 = 400 Paint() _GDIPlus_ImageSaveToFile($ghImage,'H:\b\2.jpg') ; added - is rotated, with same size as original file EndSwitch EndIf WEnd ; Clean up resources _GDIPlus_MatrixDispose($ghMatrix) _GDIPlus_ImageDispose($ghCanvas) _GDIPlus_ImageDispose($ghImage) _GDIPlus_ImageDispose($ghBitmap) _GDIPlus_PenDispose($ghPen) _GDIPlus_GraphicsDispose($gGraphicPic) _GDIPlus_Shutdown() EndFunc Func WM_MOUSEWHEEL($hWnd, $iMsg, $wParam, $lParam) #forceref $hWnd, $iMsg, $wParam, $lParam Local Const $kYmax=$iLH-1,$kDelta=2 Local $vec = GUIGetCursorInfo($gForm1) If $vec[4] = $vec[4]=$glblPic Then Local $iDelta = BitShift($wParam, 16) ; positive = up Local $iKeys = _WinAPI_LoWord($wParam) If BitAND($iKeys,$MK_CONTROL)=$MK_CONTROL Then If BitAND($iKeys,$MK_SHIFT)=$MK_SHIFT Then ; do nothing Else If $iDelta > 0 And $gY0>3 Then $gY0 -= $kDelta If $iDelta < 0 And $gY0<$kYmax Then $gY0 += $kDelta EndIf Else If BitAND($iKeys,$MK_SHIFT)=$MK_SHIFT Then If $iDelta > 0 And $gY1>3 Then $gY1 -= $kDelta If $iDelta < 0 And $gY1<$kYmax Then $gY1 += $kDelta Else If $iDelta > 0 And $gY0>3 Then $gY0 -= $kDelta If $iDelta < 0 And $gY0<$kYmax Then $gY0 += $kDelta If $iDelta > 0 And $gY1>3 Then $gY1 -= $kDelta If $iDelta < 0 And $gY1<$kYmax Then $gY1 += $kDelta EndIf EndIf EndIf Return $GUI_RUNDEFMSG EndFunc ;==>WM_MOUSEWHEEL Func Paint() _GDIPlus_GraphicsClear($ghCanvas,0) _GDIPlus_GraphicsDrawImageRect($ghCanvas, $ghImage, 0,0, $iLW, $iLH) _GDIPlus_GraphicsDrawLine($ghCanvas, $gX0, $gY0, $gX1, $gY1, $ghPen) _GDIPlus_GraphicsDrawImageRect($gGraphicPic, $ghBitmap, 0, 0, $iW, $iH) EndFunc Func WM_PAINT() _WinAPI_RedrawWindow($gForm1, 0, 0, $RDW_UPDATENOW) Paint() _WinAPI_RedrawWindow($gForm1, 0, 0, $RDW_VALIDATE) EndFunc Func Angle($y, $x) ;return value is in degree Local Const $fPi = ACos(-1), $fPi2 = ACos(-1) / 2, $fRad = 180 / $fPi Switch True Case ($x > 0) Return ATan($y / $x) * $fRad Case ($x < 0 And $y >= 0) Return ATan($y / $x + $fPi) * $fRad Case ($x < 0 And $y < 0) Return ATan($y / $x - $fPi) * $fRad Case ($x = 0 And $y > 0) Return $fPi2 * $fRad Case ($x = 0 And $y < 0) Return -$fPi2 * $fRad Case ($x = 0 And $y = 0) Return 0 EndSwitch EndFunc I also don't understand how the rotated picture gets displayed. There are graphics objects, graphics contexts and PDI+ bitmaps. How are they related?
      Help would be much appreciated.