Mark McGranaghan 8d31ec147c move to vendor
2012-11-17 08:21:42 -08:00

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