182 lines
3.6 KiB
AutoHotkey
182 lines
3.6 KiB
AutoHotkey
/*
|
|
multiline comment
|
|
msgbox(comment)
|
|
*/
|
|
send, key[pgdn]
|
|
string := "hello" . x . "world!"
|
|
string := "hello ""world""! "
|
|
string := "hello `"world""! "
|
|
; single line comment1
|
|
;;; single line comment2
|
|
|
|
::stopi::viper_off()
|
|
|
|
a::send, ^a
|
|
mylabel:send, ^{space} ;; set mark
|
|
e::send, ^e
|
|
n::
|
|
send, ^n
|
|
return
|
|
!i::
|
|
viper("iviper") ; stdlib
|
|
x = "viper"" " ; escaped quote
|
|
Return
|
|
#If WinExist("iviper" )
|
|
indexdir = %A_ScriptDir%\%dir%
|
|
FileCreateDir, % indexdir
|
|
fileindex = %indexdir%\_files
|
|
FileSelectFile, file,,, Select an image:, Images (*.gif; *.jpg; *.bmp; *.png; *.tif; *.ico; *.cur; *.ani; *.exe; *.dll)
|
|
|
|
; viper
|
|
|
|
|
|
i::viper_off()
|
|
#If
|
|
|
|
;; keybindings
|
|
#If WinExist("iviper") and WinActive("ahk_class Emacs")
|
|
|
|
p::
|
|
k::
|
|
send, ^p
|
|
return
|
|
,::send, +!, ;; beginning of page
|
|
.::send, +!. ;; end of page
|
|
[::send, !a
|
|
]::send, !e
|
|
d:: ^k ;; kill line
|
|
x:: send ^d
|
|
\:: ^!k ;; kill next word or sexp
|
|
|
|
|
|
#IfWinActive
|
|
#Persistent
|
|
|
|
F2:: ;; hotkey
|
|
start: ;; label
|
|
start2: ; label
|
|
ppm := ppm_new(50, 50, 255)
|
|
ppm_fill(ppm, 80, 90, 95)
|
|
msgbox % getPixel(ppm, 1, 1)
|
|
setPixel(90, 90, 90, ppm, 1, 1)
|
|
msgbox % getPixel(ppm, 1, 1)
|
|
ListVars ; command
|
|
msgbox % ppm
|
|
return
|
|
|
|
|
|
ppm_read(file)
|
|
{
|
|
fileread, ppm, % file
|
|
return ppm
|
|
}
|
|
|
|
::hotstring::
|
|
::hot3::
|
|
ppm_width(ppm)
|
|
{
|
|
regexmatch(ppm, "\R(\d+)\s(\d+)", dim)
|
|
return dim1
|
|
}
|
|
ppm_height(ppm)
|
|
{
|
|
regexmatch(ppm, "\R(\d+)\s(\d+)", dim)
|
|
return dim2
|
|
}
|
|
|
|
ppm_colors(ppm)
|
|
{
|
|
regexmatch(ppm, "\R(\d+)\D*\R", colors) ; \R stands for any
|
|
return colors1
|
|
}
|
|
|
|
ppm_data(ppm)
|
|
{
|
|
pos := regexmatch(ppm, "\R(\d+)\D*\R", colors) ; \R stands for any newline
|
|
stringtrimleft, data, ppm, pos + strlen(colors1)
|
|
return data
|
|
}
|
|
ppm_header(ppm)
|
|
{
|
|
pos := regexmatch(ppm, "\R(\d+)\D*\R", colors) ; \R stands for any newline
|
|
stringleft, header, ppm, pos + strlen(colors1)
|
|
return header
|
|
}
|
|
|
|
ppm_fill(ByRef ppm, r, g, b)
|
|
{
|
|
width := ppm_width(ppm)
|
|
height := ppm_height(ppm)
|
|
header := ppm_header(ppm)
|
|
headerLength := strlen(header)
|
|
varsetcapacity(data, width * height, 0)
|
|
loop, % (width * height)
|
|
{
|
|
if r
|
|
numput(r, data, (A_Index - 1) * 3, "uchar")
|
|
if g
|
|
numput(g, data, (A_Index - 1) * 3 + 1, "uchar")
|
|
if b
|
|
numput(b, data, (A_Index - 1) * 3 + 2, "uchar")
|
|
}
|
|
VarCopy(&ppm + headerLength, &data, width * height)
|
|
|
|
}
|
|
|
|
ppm_new(width, height, colors)
|
|
{
|
|
header = P6`n%width% %height%`n%colors%`n
|
|
headerLength := strlen(header)
|
|
varsetcapacity(ppm, width * height + headerLength, 1)
|
|
varsetcapacity(data, width * height, 0)
|
|
VarCopy(&ppm, &header, headerLength)
|
|
VarCopy(&ppm + headerLength, &data, width * height)
|
|
return ppm
|
|
}
|
|
|
|
heredoc =
|
|
(
|
|
P6
|
|
# lasdjkf
|
|
87 09
|
|
255
|
|
color data...
|
|
)
|
|
|
|
; Example: Simple image viewer:
|
|
|
|
Gui, +Resize
|
|
Gui, Add, Button, default, &Load New Image
|
|
Gui, Add, Radio, ym+5 x+10 vRadio checked, Load &actual size
|
|
Gui, Add, Radio, ym+5 x+10, Load to &fit screen
|
|
Gui, Add, Pic, xm vPic
|
|
Gui, Show
|
|
return
|
|
|
|
ButtonLoadNewImage:
|
|
FileSelectFile, file,,, Select an image:, Images (*.gif; *.jpg; *.bmp; *.png; *.tif; *.ico; *.cur; *.ani; *.exe; *.dll)
|
|
if file =
|
|
return
|
|
Gui, Submit, NoHide ; Save the values of the radio buttons.
|
|
if Radio = 1 ; Display image at its actual size.
|
|
{
|
|
Width = 0
|
|
Height = 0
|
|
}
|
|
else ; Second radio is selected: Resize the image to fit the screen.
|
|
{
|
|
Width := A_ScreenWidth - 28 ; Minus 28 to allow room for borders and margins inside.
|
|
Height = -1 ; "Keep aspect ratio" seems best.
|
|
}
|
|
GuiControl,, Pic, *w%width% *h%height% %file% ; Load the image.
|
|
Gui, Show, xCenter y0 AutoSize, %file% ; Resize the window to match the picture size.
|
|
return
|
|
|
|
GuiClose:
|
|
ExitApp
|
|
; Example: Simple text editor with menu bar.
|
|
|
|
; Create the sub-menus for the menu bar:
|
|
Menu, FileMenu, Add, &New, FileNew
|
|
|