123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401 |
- !ifndef NULLSOFT_NX_WINDOW_RECT_NSIS_HEADER
- !define NULLSOFT_NX_WINDOW_RECT_NSIS_HEADER
- !include "util.nsh"
- !include "logicLib.nsh"
- !include "system.nsh"
- !macro NX_GetWindowRectInternal
- Exch $0
- Push $2
- Push $3
- Push $4
- Push $5
- Push $1
- System::Call "*${stRECT} .r1"
- System::Call "${fnGetWindowRect}($0, $1)"
- System::Call "*$1${stRECT} (.r2, .r3, .r4, .r5)"
- System::Free $1
- Pop $1
- Exch 4
- Pop $0
- Exch $5
- Exch 3
- Exch $2
- Exch
- Exch $4
- Exch 2
- Exch $3
- Exch
- !macroend
- !macro NX_GetWindowRect __hwnd __left __top __right __bottom
- Push "${__hwnd}"
- ${CallArtificialFunction} NX_GetWindowRectInternal
- Pop "${__left}"
- Pop "${__top}"
- Pop "${__right}"
- Pop "${__bottom}"
- !macroend
- !define NX_GetWindowRect `!insertmacro NX_GetWindowRect`
- !macro NX_GetMappedWindowRectInternal
- Exch $0
- Exch
- Exch $2
- Push $3
- Push $4
- Push $5
- Push $1
- System::Call "*${stRECT} .r1"
- System::Call "${fnGetWindowRect}(r0, r1)"
- System::Call '${fnMapWindowPoints}(0, r2, r1, 2)'
- System::Call "*$1${stRECT} (.r5, .r2, .r3, .r4)"
- System::Free $1
- Pop $1
- Exch 4
- Pop $0
- Exch $4
- Exch 3
- Exch $5
- Exch
- Exch $3
- Exch 2
- Exch $2
- Exch
- !macroend
- !macro NX_GetMappedWindowRect __hwnd __hwndParent __left __top __right __bottom
- Push "${__hwndParent}"
- Push "${__hwnd}"
- ${CallArtificialFunction} NX_GetMappedWindowRectInternal
- Pop "${__left}"
- Pop "${__top}"
- Pop "${__right}"
- Pop "${__bottom}"
- !macroend
- !define NX_GetMappedWindowRect `!insertmacro NX_GetMappedWindowRect`
- !macro NX_GetWindowSizeInternal
- Exch $0
- Push $2
- Push $3
- Push $4
- Push $5
- Push $1
- System::Call "*${stRECT} .r1"
- System::Call "${fnGetWindowRect} ($0, $1)"
- System::Call "*$1${stRECT} (.r2, .r3, .r4, .r5)"
- System::Free $1
- Pop $1
- IntOp $0 $4 - $2
- IntOp $2 $5 - $3
- Pop $5
- Pop $4
- Pop $3
- Exch $2
- Exch
- Exch $0
- !macroend
- !macro NX_GetWindowSize __hwnd __width __height
- Push "${__hwnd}"
- ${CallArtificialFunction} NX_GetWindowSizeInternal
- Pop "${__width}"
- Pop "${__height}"
- !macroend
- !define NX_GetWindowSize `!insertmacro NX_GetWindowSize`
- !macro NX_GetWindowPosInternal
- Exch $0
- Push $2
- Push $3
- Push $4
- Push $5
- Push $1
- System::Call "*${stRECT} .r1"
- System::Call "${fnGetWindowRect}($0, $1)"
- System::Call "*$1${stRECT} (.r2, .r3, .r4, .r5)"
- System::Free $1
- Pop $1
- StrCpy $0 $3
- Pop $5
- Pop $4
- Pop $3
- Exch $2
- Exch
- Exch $0
- Exch
- !macroend
- !macro NX_GetWindowPos __hwnd __left __top
- Push "${__hwnd}"
- ${CallArtificialFunction} NX_GetWindowPosInternal
- Pop "${__left}"
- Pop "${__top}"
- !macroend
- !define NX_GetWindowPos `!insertmacro NX_GetWindowPos`
- !macro NX_GetMappedWindowPosInternal
- Exch $0
- Exch
- Exch $2
- Push $3
- Push $4
- Push $5
- Push $1
- System::Call "*${stRECT} .r1"
- System::Call "${fnGetWindowRect}($0, $1)"
- System::Call "${fnMapWindowPoints}(0, $2, r1, 1)"
- System::Call "*$1${stRECT} (.r2, .r3, .r4, .r5)"
- System::Free $1
- Pop $1
- StrCpy $0 $3
- Pop $5
- Pop $4
- Pop $3
- Exch $2
- Exch
- Exch $0
- Exch
- !macroend
- !macro NX_GetMappedWindowPos __hwnd __hwndParent __left __top
- Push "${__hwndParent}"
- Push "${__hwnd}"
- ${CallArtificialFunction} NX_GetMappedWindowPosInternal
- Pop "${__left}"
- Pop "${__top}"
- !macroend
- !define NX_GetMappedWindowPos `!insertmacro NX_GetMappedWindowPos`
- !macro NX_SetWindowPos __hwnd __left __top
- System::Call "${fnSetWindowPos} \
- (${__hwnd}, 0, ${__left}, ${__top}, 0, 0, \
- ${SWP_NOACTIVATE}|${SWP_NOZORDER}|${SWP_NOSIZE})"
- !macroend
- !define NX_SetWindowPos `!insertmacro NX_SetWindowPos`
- !macro NX_SetWindowSize __hwnd __width __height
- System::Call "${fnSetWindowPos} \
- (${__hwnd}, 0, 0, 0, ${__width}, ${__height}, \
- ${SWP_NOACTIVATE}|${SWP_NOZORDER}|${SWP_NOMOVE})"
- !macroend
- !define NX_SetWindowSize `!insertmacro NX_SetWindowSize`
- !macro NX_SetWindowPosAndSize __hwnd __left __top __width __height
- System::Call "User32::SetWindowPos(i, i, i, i, i, i, i) b \
- (${__hwnd}, 0, ${__left}, ${__top}, ${__width}, ${__height},\
- ${SWP_NOACTIVATE}|${SWP_NOZORDER})"
- !macroend
- !define NX_SetWindowPosAndSize `!insertmacro NX_SetWindowPosAndSize`
- !macro NX_SetWindowOrder __hwnd __insertAfterWindow
- System::Call "${fnSetWindowPos} \
- (${__hwnd}, ${__insertAfterWindow}, 0, 0, 0, 0, \
- ${SWP_NOACTIVATE}|${SWP_NOSIZE}|${SWP_NOMOVE})"
- !macroend
- !define NX_SetWindowOrder `!insertmacro NX_SetWindowOrder`
- !macro NX_OffsetWindowPosInternal
- !define hwnd_ $R0
- !define offsetX_ $R1
- !define offsetY_ $R2
- Exch ${offsetY_}
- Exch
- Exch ${offsetX_}
- Exch 2
- Exch ${hwnd_}
- Push $0
- Push $1
- Push $2
- Push $3
- Push $4
- System::Call "*${stRECT} .r4"
- System::Call "${fnGetWindowRect} (${hwnd_}, r4)"
- System::Call "${fnGetAncestor} (${hwnd_}, ${GA_PARENT}).r0"
- ${If} $R0 != 0
- System::Call "${fnMapWindowPoints} (0, r0, r4, 2)"
- ${EndIf}
- System::Call "*$4${stRECT} (.r0, .r1, .r2, .r3)"
- System::Free $4
- IntOp $0 $0 + ${offsetX_}
- IntOp $1 $1 + ${offsetY_}
- System::Call "${fnSetWindowPos} \
- (${hwnd_}, 0, $0, $1, 0, 0, \
- ${SWP_NOACTIVATE}|${SWP_NOZORDER}|${SWP_NOSIZE})"
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Pop $0
- Pop ${hwnd_}
- Pop ${offsetY_}
- Pop ${offsetX_}
- !undef hwnd_
- !undef offsetX_
- !undef offsetY_
- !macroend
- !macro NX_OffsetWindowPos __hwnd __offset_x __offset_y
- Push "${__hwnd}"
- Push "${__offset_x}"
- Push "${__offset_y}"
- ${CallArtificialFunction} NX_OffsetWindowPosInternal
- !macroend
- !define NX_OffsetWindowPos "!insertmacro 'NX_OffsetWindowPos'"
- !macro NX_IncreaseWindowSizeInternal
- !define hwnd_ $R0
- !define deltaCX_ $R1
- !define deltaCY_ $R2
- Exch ${deltaCY_}
- Exch
- Exch ${deltaCX_}
- Exch 2
- Exch ${hwnd_}
- Push $0
- Push $1
- Push $2
- Push $3
- Push $4
- System::Call "*${stRECT} .r4"
- System::Call "${fnGetWindowRect}(${hwnd_}, r4)"
- System::Call "*$4${stRECT} (.r0, .r1, .r2, .r3)"
- System::Free $4
- IntOp $0 $2 - $0
- IntOp $1 $3 - $1
- IntOp $0 $0 + ${deltaCX_}
- IntOp $1 $1 + ${deltaCY_}
- System::Call "${fnSetWindowPos}\
- (${__hwnd}, 0, 0, 0, $0, $1, \
- ${SWP_NOACTIVATE}|${SWP_NOZORDER}|${SWP_NOMOVE})"
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Pop $0
- Pop ${hwnd_}
- Pop ${deltaCY_}
- Pop ${deltaCX_}
- !undef hwnd_
- !undef deltaCX_
- !undef deltaCY_
- !macroend
- !macro NX_IncreaseWindowSize __hwnd __delta_cx __delta_cy
- Push "${__hwnd}"
- Push "${__delta_cx}"
- Push "${__delta_cy}"
- ${CallArtificialFunction} NX_IncreaseWindowSizeInternal
- !macroend
- !define NX_IncreaseWindowSize "!insertmacro 'NX_IncreaseWindowSize'"
- !macro NX_ConvertHorzDLUInternal
- Exch $1 ; dlu
- Exch
- Exch $0 ; hwnd
- Push $2
- System::Call "*${stRECT}($1, 0, 0, 0) .r2"
- System::Call "${fnMapDialogRect}($0, $2).s"
- Pop $1
- ${If} $1 != 0
- System::Call "*$2${stRECT} (.r1, _)"
- ${EndIf}
- System::Free $2
- Pop $2
- Pop $0
- Exch $1
- !macroend
- !macro NX_ConvertHorzDLU __hwnd __dlu __px
- Push "${__hwnd}"
- Push "${__dlu}"
- ${CallArtificialFunction} NX_ConvertHorzDLUInternal
- Pop "${__px}"
- !macroend
- !define NX_ConvertHorzDLU `!insertmacro NX_ConvertHorzDLU`
- !macro NX_ConvertVertDLUInternal
- Exch $1 ; dlu
- Exch
- Exch $0 ; hwnd
- Push $2
- System::Call "*${stRECT}(0, $1, 0, 0) .r2"
- System::Call "${fnMapDialogRect}($0, $2).s"
- Pop $1
- ${If} $1 != 0
- System::Call "*$2${stRECT} (., .r1, _)"
- ${EndIf}
- System::Free $2
- Pop $2
- Pop $0
- Exch $1
- !macroend
- !macro NX_ConvertVertDLU __hwnd __dlu __px
- Push "${__hwnd}"
- Push "${__dlu}"
- ${CallArtificialFunction} NX_ConvertVertDLUInternal
- Pop "${__px}"
- !macroend
- !define NX_ConvertVertDLU `!insertmacro NX_ConvertVertDLU`
- !endif ; defined(NULLSOFT_NX_WINDOW_RECT_NSIS_HEADER)
|