HOSPP2ANSW654DYRTC6CQUQA2GUKV6T2FI7QBKXD2DZS3R32IMGAC
QDTXNKWJXH46OWBLAYUOH4X2K3HR3OQRB7OTD234HA35UF2VQDBAC
R5OKMVVCPAKL2IUMIY7A7ZMTJQZS6UWKW4EVLAVCPLPVNI5DCEYQC
YYUGIYFVT5VH5XTOQCL2OEN3PLQ3U6SR4DQSOA5S3SNF25Z2AL7AC
2L4DL7PG5Q3IOZ2NTSULXDTDDA7AHNE43P7GH5TSVG2DZ4XC62NQC
22S4LHNKMHVHEBGGRWJR6WLAD5TNHYUWQU6HRZVPCDLOD4ZIWGUAC
Z4XRNDTRTGSZHNB65WNHOVUBFW4QWQABLVSK4RM3QJHGK33DMRJAC
73OCE2MCBJJZZMN2KYPJTBOUCKBZAOQ2QIAMTGCNOOJ2AJAXFT2AC
H2DPLWMVRFYTO2CQTG54FMT2LF3B6UKLXH32CUA22DNQJVP5XBNQC
QYIFOHW3WDDQMK4ATY6IOSQRFHJOQ5QCPDKRC4GVGWLQEH4HGWVQC
BULPIBEGL7TMK6CVIE7IS7WGAHGOSUJBGJSFQK542MOWGHP2ADQQC
DHI6IJCNSTHGED67T6H5X6Y636C7PIDGIJD32HBEKLT5WIMRS5MAC
AYE2VEGJ63AWWX76SFQZLOTBIZOQRWBG4AZMIOSVOI2WZVRQJXYAC
WLHI7KD3LJTQH6V7RLVJWGZUR4YQK6LN4OIUMIN45BGMMQGN6RNQC
2RXZ3PGOTTZ6M4R372JXIKPLBQKPVBMAXNPIEO2HZDN4EMYW4GNAC
MGT5FTJ35MGYCQO3TZVK3RYUIN5YX475R4XG7RO42SYLYF4AIKFAC
A2NV3WVOKBOWBCSV3K4I6MO5LSVSSUZVNH226HV2HDCOMSPRVSSAC
MDXGMZU2MBEDMTB755D3RRYEFKF54GTTYTI5XJYKKKN5ZFQWZXTAC
LERERVPHE5SEWDHQ7IAGQSXUAI2QHQJ33NBNRMRXZ34X7P23I2IAC
OYXDYPGSJK2QICJ6RBA7357WT4FSNAWRUT77YLQHT3F3VYMWGNFQC
JY4VK7L2JKRWRV45QEMGLWPFAQRUWKFHMAL6DWNYEDCKO5Y4W5FQC
5DOC2CBMBDMAOJ7IKLDGVRCY4SNPCJTTF7DK7WGNLPGNV4AWVJNAC
OIB2QPRCB4MAVZV5NCEKSAL45ITT6V4BYSET3Q2VCT3WBOIC4QVQC
AD34IX2ZSGYGU3LGY2IZOZNKD4HRQOYJVG5UWMWLXJZJSM62FFOAC
JF5L2BBS7ESMKHNGKLXI2F32GZKET2ICJ4KT2L5BMH3P2L2Y5MRAC
6E3HVYWFP3JLJ3DJ5BH4WGJUXQV5MDCBCE5GH3SXRHRQZOG4VJLQC
YTSPVDZHEN5LLNMGIBUBLPWFWSFM3SOHBRGWYSDEVFKRTH24ARRQC
S5VCAFKYBM35HF3SI4MCAQROWBRUC7YHWJMKWC6GWTTV5PHUCEFAC
IMEJA43L3OX7S5KIYLZJ4F3ITACLAA5SZBHSCIJMULCPRSW7LXBAC
V5MJRFOZRVVDCPOWTLXPHS2HZBZKOOCPPKFMRP6MWZN6N62QLFAAC
XOAHJ6M3QKHSE5F7ICLPXN3RMH7JQEZXDKTOTIOBYKJFVT6PMYRAC
R53OF3ONKT5VL5BGK63YSN6GXIIAVNYDG4UMHITK72WXFWPJ25MQC
DFSDPDO7RHOLPVT4TD2Z3YZCKS6737LYIWBTJJI4BO73IIAJ5BYQC
4RUI5X52CSQODLT3WI4VBMXWZLACBYV5QANGDKRWS3VONZPVSEEQC
PHFWIFYKFOGVX7CEAMGJ3FDY6LL5QSZ7T7CTCZ66WMNXV6C242FAC
QVDQMJXVTM3BBMQDYIAIZMFLBQ56Q27U7H2OYRFE53MEMOCIXIAQC
WY3JD6W6EANKQC4SRRIAM2Q3QZNVOGN3MIMBL3M55S4ZZSJFSF2AC
HMODUNJEQLZ3W46GKYIDL55F6COVXHTIC6UW4AK3SXOOKOPE6NNAC
PFT5Y2ZYGQA6XXOZ5HH75WVUGA4B3KTDRHSFOZRAUKTPSFOPMNRAC
CG3264MMJTTSCJWUA2EMTBOPTDB2NZIJ7XICKHWUTZ4UWLFP7POAC
GN3IF4WF352YK5K4YHVMAIMPL7PNTCEMDWW22PTKDOXKV2FZJ7NQC
KOYAJWE4NJ2J4X3SHEAVMRXYZPZGOMTI7OX3PTUQIDIZ2GQI6UKAC
242L3OQXTU2TCAINRJXQEEDSXQXM7Y7USUPBK37ZNM3A7V5TUDSAC
U7M4M2F7P5TGLTHKQ7J72GQFNPBII4PLJVJ44YVVOYEI4KPUDI6AC
3OKKTUT4Q7W44JHILOFV5BVUA7ZOBIHBCEXGZ65CPXV4PRLI2W4QC
TRNWIQN6RPLDLYWULLKG5L255E7E3DPNGLCSLAF6IJWYQRCCLARQC
BOFNXP5GZDCUMQG3LQVTSSFEQP7REQ4RIRJLDLETFSAGFTVDVEKAC
HYEAFRZ2UEKDYTAE2GDQLHEJBPQASP2NDLMXB7F6MTVK2BKOXKEAC
5L7K4GBDEAFH44LMLNKVFMHLWDNXXBKRPEI347VE5ZLXVFSMD2FAC
ULKLJBN6Q2EXYOXGIJLJ5NZPZD2MQSWR63Z2I3KDYJDAJQA5VNZAC
V5TP27FPD6GPATHPABRW2FKP7BIKY53KL47UVEU5DF4WXEZF7CKAC
AVQ5MC5DWNLI6LUUIPGBLGP4LKRPGWBY4THNY25OBT2FAVHC6MCAC
OTIBCAUJ3KDQJLVDN3A536DLZGNRYMGJLORZVR3WLCGXGO6UGO6AC
YKRF5V3ZZQIQ3UGAFYTQT5PUQVHCP2VHFDX77EY2C3X543HUDYKQC
IRV65LZPHFLLYPTMLTDO6OJDHVZQJ6MFXZ45IRXRDSRSEQNO5DIAC
ESETRNLB3MIJ2SID6HJMMP52FEVUBLGK2HLWD75KDQZAKQMKSF2QC
DLQMM2656JHXX3ONOEM6UIOXKFJFT5QT7RHWK7YS2W77PVZWHRSAC
4C375P53EXHUPXUFQSI3LA7THEP2WOKX5ZB57OQ5ZSM7LYOVW5HAC
LUNH47XXUUITDLE6NBI3J7GJQWQ45OQAGXY2HJI4HRPOR2GUULPAC
3TFEAQSWVFGSH3ISZ4Q3DFR3YPPWHEIBUEVR3XWB7QX6VKHW455QC
CVGE3SIGJRGCLY3A2RBPGFXAEKVZXUUIZQLRHJLM4VPUM4SHEZIAC
DAENUOGV7KR6MZVXS36HEN3SZC4RFIS6REGAFVBOFEPO76EUDGIAC
B3IWYWSRDSZ7AG5HDS3TELNTG2IKRZYPI25B6LJGVFAJYTHVXZZAC
VHQCNMARPMNBSIUFLJG7HVK4QGDNPCGNVFLHS3I4IGNVSV5MRLYQC
DXT4QTAH5G6J7ZB3SMOOXVECKWYUPZVE2ODMUFTPPNHLTOSZLQSAC
BYG5CEMVXANDTBI2ORNVMEY6K3EBRIHZHS4QBK27VONJC5537COQC
WTDKUACNTWB4KD34TZZNPILNX4FQ6MR64XYBAA5GOMICF73WLIAAC
AH744RFRNNEQ7THYLBD52BKUGPJJL36G5YLQY6NVU442UICAXUXQC
BLWAYPKV3MLDZ4ALXLUJ25AIR6PCIL4RFYNRYLB26GFVC2KQBYBAC
XNFTJHC4QSHNSIWNN7K6QZEZ37GTQYKHS4EPNSVPQCUSWREROGIQC
y = y + math.floor(15*Zoom)
if y + math.floor(15*Zoom) > App.screen.height then
y = y + Line_height
if y + Line_height > App.screen.height then
--? print(Cursor_y, Cursor_y*Line_width, Cursor_y*Line_width+Cursor_x, Cursor_y*Line_width+Cursor_x+clipboard_width, Line_width*App.screen.height/math.floor(15*Zoom))
if Cursor_y*Line_width+Cursor_x + clipboard_width > Line_width*App.screen.height/math.floor(15*Zoom) then
--? print(Cursor_y, Cursor_y*Line_width, Cursor_y*Line_width+Cursor_x, Cursor_y*Line_width+Cursor_x+clipboard_width, Line_width*App.screen.height/Line_height)
if Cursor_y*Line_width+Cursor_x + clipboard_width > Line_width*App.screen.height/Line_height then
if line.screen_line_starting_pos == nil then return y < line.y + math.floor(15*Zoom) end
return y < line.y + #line.screen_line_starting_pos * math.floor(15*Zoom)
if line.screen_line_starting_pos == nil then return y < line.y + Line_height end
return y < line.y + #line.screen_line_starting_pos * Line_height
elseif chord == 'C-=' then
Font_height = Font_height+2
love.graphics.setFont(love.graphics.newFont(Font_height))
Line_height = math.floor(Font_height*1.1)
Text.redraw_all()
elseif chord == 'C--' then
Font_height = Font_height-2
love.graphics.setFont(love.graphics.newFont(Font_height))
Text.redraw_all()
Line_height = math.floor(Font_height*1.1)
elseif chord == 'C-0' then
Font_height = 14
love.graphics.setFont(love.graphics.newFont(Font_height))
Text.redraw_all()
Line_height = 15
love.graphics.print("Things you can do:", 16+30,y, 0, Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print("* Press the mouse button to start drawing a "..current_shape(), 16+30,y, 0, Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print("* Hover on a point and press 'ctrl+v' to start moving it,", 16+30,y, 0, Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print("then press the mouse button to finish", 16+30+bullet_indent(),y, 0, Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print("* Hover on a point and press 'ctrl+n' to name it,", 16+30,y, 0, Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print("then press 'enter' to finish", 16+30+bullet_indent(),y, 0, Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print("* Hover on a point or shape and press 'ctrl+d' to delete it", 16+30,y, 0, Zoom)
y = y + math.floor(15*Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print("Things you can do:", 16+30,y)
y = y + Line_height
love.graphics.print("* Press the mouse button to start drawing a "..current_shape(), 16+30,y)
y = y + Line_height
love.graphics.print("* Hover on a point and press 'ctrl+v' to start moving it,", 16+30,y)
y = y + Line_height
love.graphics.print("then press the mouse button to finish", 16+30+bullet_indent(),y)
y = y + Line_height
love.graphics.print("* Hover on a point and press 'ctrl+n' to name it,", 16+30,y)
y = y + Line_height
love.graphics.print("then press 'enter' to finish", 16+30+bullet_indent(),y)
y = y + Line_height
love.graphics.print("* Hover on a point or shape and press 'ctrl+d' to delete it", 16+30,y)
y = y + Line_height
y = y + Line_height
love.graphics.print("* Press 'ctrl+f' to switch to drawing freehand strokes", 16+30,y, 0, Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print("* Press 'ctrl+f' to switch to drawing freehand strokes", 16+30,y)
y = y + Line_height
love.graphics.print("* Press 'ctrl+m' to switch to drawing horizontal/vertical lines", 16+30,y, 0, Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print("* Press 'ctrl+m' to switch to drawing horizontal/vertical lines", 16+30,y)
y = y + Line_height
love.graphics.print("* Press 'ctrl+=' or 'ctrl+-' to Zoom in or out", 16+30,y, 0, Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print("* Press 'ctrl+0' to reset Zoom", 16+30,y, 0, Zoom)
y = y + math.floor(15*Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print("Hit 'esc' now to hide this message", 16+30,y, 0, Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print("* Press 'ctrl+=' or 'ctrl+-' to zoom in or out", 16+30,y)
y = y + Line_height
love.graphics.print("* Press 'ctrl+0' to reset zoom", 16+30,y)
y = y + Line_height
y = y + Line_height
love.graphics.print("Hit 'esc' now to hide this message", 16+30,y)
y = y + Line_height
love.graphics.print("You're currently drawing a "..current_shape(drawing.pending), 16+30,y, 0, Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print('Things you can do now:', 16+30,y, 0, Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print("You're currently drawing a "..current_shape(drawing.pending), 16+30,y)
y = y + Line_height
love.graphics.print('Things you can do now:', 16+30,y)
y = y + Line_height
love.graphics.print('* Release the mouse button to finish drawing the stroke', 16+30,y, 0, Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print('* Release the mouse button to finish drawing the stroke', 16+30,y)
y = y + Line_height
love.graphics.print('* Release the mouse button to finish drawing the line', 16+30,y, 0, Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print('* Release the mouse button to finish drawing the line', 16+30,y)
y = y + Line_height
love.graphics.print('* Release the mouse button to finish drawing the circle', 16+30,y, 0, Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print("* Press 'a' to draw just an arc of a circle", 16+30,y, 0, Zoom)
love.graphics.print('* Release the mouse button to finish drawing the circle', 16+30,y)
y = y + Line_height
love.graphics.print("* Press 'a' to draw just an arc of a circle", 16+30,y)
love.graphics.print('* Release the mouse button to finish drawing the polygon', 16+30,y, 0, Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print("* Press 'p' to add a vertex to the polygon", 16+30,y, 0, Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print('* Release the mouse button to finish drawing the polygon', 16+30,y)
y = y + Line_height
love.graphics.print("* Press 'p' to add a vertex to the polygon", 16+30,y)
y = y + Line_height
love.graphics.print("* Press 'esc' then release the mouse button to cancel the current shape", 16+30,y, 0, Zoom)
y = y + math.floor(15*Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print("* Press 'esc' then release the mouse button to cancel the current shape", 16+30,y)
y = y + Line_height
y = y + Line_height
love.graphics.print("* Press 'm' to switch to drawing horizontal/vertical lines", 16+30,y, 0, Zoom)
y = y + math.floor(15*Zoom)
love.graphics.print("* Press 'm' to switch to drawing horizontal/vertical lines", 16+30,y)
y = y + Line_height
if chord == 'C-=' then
Line_width = Line_width/Zoom
Zoom = Zoom+0.5
Line_width = Line_width*Zoom
elseif chord == 'C--' then
Line_width = Line_width/Zoom
Zoom = Zoom-0.5
Line_width = Line_width*Zoom
elseif chord == 'C-0' then
Line_width = Line_width/Zoom
Zoom = 1.5
Line_width = Line_width*Zoom
elseif chord == 'C-f' and not love.mouse.isDown('1') then
if chord == 'C-f' and not love.mouse.isDown('1') then