mirror of
https://github.com/maoakeEnterprise/amazing.git
synced 2026-04-29 00:14:34 +02:00
fix(parsing): make output work for AMazeIng class __init__
Basic main to display ascii print
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 65 KiB |
@@ -0,0 +1,250 @@
|
||||
/* XPM */
|
||||
static char *Dont_panic[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"64 64 180 2 ",
|
||||
" c #000000",
|
||||
". c #020D03",
|
||||
"X c #0D0E0A",
|
||||
"o c #090906",
|
||||
"O c #130F02",
|
||||
"+ c #031505",
|
||||
"@ c #051B06",
|
||||
"# c #12120E",
|
||||
"$ c #181814",
|
||||
"% c #370D03",
|
||||
"& c #002304",
|
||||
"* c #012D06",
|
||||
"= c #07280B",
|
||||
"- c #04360A",
|
||||
"; c #0C3F11",
|
||||
": c #113F16",
|
||||
"> c #20201B",
|
||||
", c #37372D",
|
||||
"< c #3E3E33",
|
||||
"1 c #4E1205",
|
||||
"2 c #5E1706",
|
||||
"3 c #691A07",
|
||||
"4 c #73240F",
|
||||
"5 c #034A0B",
|
||||
"6 c #005C0B",
|
||||
"7 c #01640D",
|
||||
"8 c #006E0D",
|
||||
"9 c #15670D",
|
||||
"0 c #00710D",
|
||||
"q c #096815",
|
||||
"w c #047512",
|
||||
"e c #097A16",
|
||||
"r c #0D7D1A",
|
||||
"t c #077414",
|
||||
"y c #107D1C",
|
||||
"u c #11681B",
|
||||
"i c #1B4420",
|
||||
"p c #057E25",
|
||||
"a c #0A7B22",
|
||||
"s c #05772A",
|
||||
"d c #057A2B",
|
||||
"f c #047723",
|
||||
"g c #197B24",
|
||||
"h c #276E2E",
|
||||
"j c #49580C",
|
||||
"k c #6A4D0D",
|
||||
"l c #53601A",
|
||||
"z c #44443C",
|
||||
"x c #4B4C3D",
|
||||
"c c #504F41",
|
||||
"v c #535345",
|
||||
"b c #58584D",
|
||||
"n c #5C5C53",
|
||||
"m c #5C6153",
|
||||
"M c #666859",
|
||||
"N c #7B7B6C",
|
||||
"B c #767764",
|
||||
"V c #AE3A0E",
|
||||
"C c #B9370E",
|
||||
"Z c #C52F0C",
|
||||
"A c #C6300D",
|
||||
"S c #C8320E",
|
||||
"D c #CB3511",
|
||||
"F c #CF3A14",
|
||||
"G c #C93C18",
|
||||
"H c #D33C16",
|
||||
"J c #D23E18",
|
||||
"K c #B65726",
|
||||
"L c #98662B",
|
||||
"P c #D3431C",
|
||||
"I c #DC451C",
|
||||
"U c #DC491E",
|
||||
"Y c #D54C1E",
|
||||
"T c #E14A1F",
|
||||
"R c #DC4C24",
|
||||
"E c #D94C26",
|
||||
"W c #DC5A33",
|
||||
"Q c #E14D22",
|
||||
"! c #E05A32",
|
||||
"~ c #DF6039",
|
||||
"^ c #E3643D",
|
||||
"/ c #E56B43",
|
||||
"( c #E5724A",
|
||||
") c #05861E",
|
||||
"_ c #0F801B",
|
||||
"` c #068A1C",
|
||||
"' c #068F1A",
|
||||
"] c #11821E",
|
||||
"[ c #07921B",
|
||||
"{ c #08941D",
|
||||
"} c #058322",
|
||||
"| c #068922",
|
||||
" . c #098D24",
|
||||
".. c #05842C",
|
||||
"X. c #068B2C",
|
||||
"o. c #088426",
|
||||
"O. c #158421",
|
||||
"+. c #198926",
|
||||
"@. c #1D8D29",
|
||||
"#. c #1A8626",
|
||||
"$. c #0A9224",
|
||||
"%. c #0D952A",
|
||||
"&. c #0E9A2C",
|
||||
"*. c #0A9528",
|
||||
"=. c #109C2E",
|
||||
"-. c #068D31",
|
||||
";. c #068730",
|
||||
":. c #069433",
|
||||
">. c #069A35",
|
||||
",. c #079E38",
|
||||
"<. c #119D32",
|
||||
"1. c #22882D",
|
||||
"2. c #22922E",
|
||||
"3. c #269532",
|
||||
"4. c #299435",
|
||||
"5. c #299936",
|
||||
"6. c #2D9D39",
|
||||
"7. c #2B9739",
|
||||
"8. c #308A3A",
|
||||
"9. c #07A63B",
|
||||
"0. c #14A235",
|
||||
"q. c #15A339",
|
||||
"w. c #32A23E",
|
||||
"e. c #36A541",
|
||||
"r. c #3AA746",
|
||||
"t. c #3AA946",
|
||||
"y. c #3EAD49",
|
||||
"u. c #63985E",
|
||||
"i. c #40AE4B",
|
||||
"p. c #43A64E",
|
||||
"a. c #43B24E",
|
||||
"s. c #46B451",
|
||||
"d. c #49B654",
|
||||
"f. c #4AB956",
|
||||
"g. c #4EBD59",
|
||||
"h. c #50BF5B",
|
||||
"j. c #50B158",
|
||||
"k. c #6F9266",
|
||||
"l. c #61A862",
|
||||
"z. c #63B667",
|
||||
"x. c #66B76B",
|
||||
"c. c #52C15E",
|
||||
"v. c #56C461",
|
||||
"b. c #58C763",
|
||||
"n. c #5BC966",
|
||||
"m. c #5ECD69",
|
||||
"M. c #61CF6C",
|
||||
"N. c #64C66C",
|
||||
"B. c #63D16E",
|
||||
"V. c #76C57B",
|
||||
"C. c #66D471",
|
||||
"Z. c #68D773",
|
||||
"A. c #6BD976",
|
||||
"S. c #6EDC79",
|
||||
"D. c #70DE7B",
|
||||
"F. c #72E07D",
|
||||
"G. c #8D927F",
|
||||
"H. c #7FC381",
|
||||
"J. c #76E481",
|
||||
"K. c #79E783",
|
||||
"L. c #7CEA86",
|
||||
"P. c #7FEC89",
|
||||
"I. c #969986",
|
||||
"U. c #8BBF8C",
|
||||
"Y. c #9BAF93",
|
||||
"T. c #A8AA9A",
|
||||
"R. c #A3B59A",
|
||||
"E. c #ADB1A2",
|
||||
"W. c #B5B7A9",
|
||||
"Q. c #83C286",
|
||||
"!. c #96C998",
|
||||
"~. c #81EE8B",
|
||||
"^. c #84F28F",
|
||||
"/. c #86F491",
|
||||
"(. c #8CF996",
|
||||
"). c #8BF895",
|
||||
"_. c #ABC9A8",
|
||||
"`. c #C5C6BB",
|
||||
"'. c #CACAC0",
|
||||
"]. c None",
|
||||
/* pixels */
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].;.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].,.>.].-.;.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].]...].].-.,.].-.,.].]...].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].:.].]...X.].-.-.].:.:.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].o.].].} p p o.p ].>.-.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].p ].} ) ].} p ].p ..].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].) | ) ) ) ) } p p ].].].].].].].].].].@.3.3.4.7.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].]. .&.<.%.` ) ) } p ].].].].].].].+.@.3.3.5.6.6.e.e.e.e.e.].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].| <.q.<.0.&.) ) | ].].].].].g +.@.2.3.5.6.6.e.t.e.t.t.t.y.y.t.].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].]. .<.<.[ $.0.$.) ].].].].].] +.@.@.5.6.6.e.e.y.y.y.a.a.s.s.s.a.a.i.].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].| <.<.' [ =.$.` | >.>.].O.+.@.2.5.5.w.e.t.y.y.y.s.d.f.f.f.f.f.f.s.s.].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].| %.q.<.0.0. .) | o.o.O.+.@.2.5.6.w.e.y.y.s.s.f.g.c.c.c.c.c.c.h.g.g.d.].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].| .&.&.` ` ].].e r O.+.2.3.5.w.e.y.y.s.f.g.c.v.v.b.n.n.n.b.b.v.c.h.f.].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].| | ) ` ].].].].r ] +.@.3.5.6.e.y.y.s.f.g.v.v.n.m.M.B.B.M.M.m.n.b.v.h.d.].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].o.} ].].].].].e _ O.@.2.5.6.e.y.y.s.g.g.v.b.m.B.B.C.Z.A.Z.Z.C.M.m.n.v.h.d.].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].X.-.].].].].].].e ] +.@.3.5.w.e.y.y.d.g.v.b.m.B.Z.A.S.D.D.D.S.A.Z.B.m.n.v.g.].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].:.].].].].].].t r O.+.2.3.6.w.t.y.s.g.c.b.m.C.Z.S.F.J.J.K.J.J.D.S.Z.B.m.b.c.d.].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].:.-.].].].].].].t _ O.@.2.7.6.e.t.s.d.g.v.b.B.C.A.F.J.L.P.~.P.K.J.F.A.C.M.n.v.g.].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].:.:.].].].].].].w e ] O.@.2.7.w.e.y.s.d.c.v.m.C.Z.F.J.L.~././.^.~.L.J.S.Z.B.n.v.g.].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].;.-.d ].].].].].].w e ] +.@.1.4.w.r.y.s.f.c.v.m.C.A.F.J.P./.).(.).^.P.J.D.A.B.m.v.h.d.].].].].].].].].].].].].].].].].",
|
||||
"].].].]...-.d ].].].].].].].w e ] u = + @ h r.y.s.f.v.v.m.C.A.F.K.~./.).(./.^.L.J.D.Z.B.n.v.h.d.].].].].].].].].].].].].].].].].",
|
||||
"].].].].d d d d ;.:.9.9.,.e w e q + o M U.y.s.d.c.v.m.B.Z.F.J.P.^.^./.^.P.K.F.S.Z.M.n.c.g.d.].].].].].].].].].].].].].].].].",
|
||||
"].].].].d d s d d d ;.-.:.d w e - X B E.l.y.d.c.v.m.B.Z.S.F.J.K.P.~.P.K.J.D.A.C.m.b.c.g.s.].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].d s d d f w t + $ v I.x.s.g.c.b.m.C.Z.S.F.J.J.J.J.F.D.A.C.M.n.v.h.f.a.].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].8 w 7 . c `._.f.f.c.v.b.B.B.A.A.S.D.D.D.A.A.C.M.m.v.c.g.s.i.].].].].].].].:.-.].].].].].].].",
|
||||
"].].].].].].].].].].].].].].w 7 . $ B N u.d.g.c.c.n.B.B.C.C.C.A.C.C.B.m.n.v.c.g.f.s.y.].].].].].].;.9.].].-.].].].].].",
|
||||
"].].].].].].].].].].].].].].8 8 + o o , E.Q.j.c.c.c.c.n.m.M.M.M.N.V.H.z.h.c.g.f.a.y.e.].].].].].].X.;.].:.,.].].].].].",
|
||||
"].].].].].].].].].].].].].].0 0 * z `._.u.j.f.c.c.c.b.n.M.U.k.W.`.m i p.f.a.y.t.e.].].].].].p p ]...:.:.].].].].].",
|
||||
"].].].].].].].].].].].].].].0 0 5 # n b v R.!.l.z.V.x.u.R.T.c M m $ i a.y.t.w.5.o.:.].].p } ].p ....].>.:.].].].",
|
||||
"].].].].].].].].].].].].].].8 0 8 @ < T.E.M G.`.I., v x X . 8.t.e.6.].].X.X.].) } ) p p ]...:.].].].].",
|
||||
"].].].].].].].].].].].].].].].0 0 5 X < < # x N x o h w.6.7.].].} } ) ) ) ) ) ].p p p ].].].].",
|
||||
"].].].].].].].].].].].].].].].8 0 8 * o X o 1.5.5.].].].| | %.%.` ` ) ) } o.].].].].].",
|
||||
"].].].].].].].].].].].].].].].].0 0 8 & : 3.3.2.].].].| <.0.0.<. .` ) } ].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].8 8 0 7 @ = g 3.@.].].].]. .0.&.{ =.<.| ) ].| :.-.].].].",
|
||||
"].].].].].].].].].].].].].].].].].8 0 0 7 & = g 2.#.].].].].].$.0.*.' [ 0.&.) } X.>.].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].8 0 0 8 - + o 5 g +.O.O.].].].].]. .&.$.' ' =.<.| } ].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].0 0 0 0 6 * O 1 3 3 3 3 % . = u O.] ] y ].].].].].].| ) ) ' ' ` .].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].8 0 0 0 0 9 k C P E J G 4 O * 5 q y _ a a a ].].].].].].].| | ) ` ` ].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].8 0 0 0 8 j G / ^ R ~ l w e e e t f d ;.].].].].].].X.o.].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].8 0 0 9 V W / R ^ L 0 w 0 0 ].].d -.:.].].].].:...].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].0 9 V J Q U E K 9 ].].].].].d ..,.].].].>.;.].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].S H I T Y I ].].].].].].].d :.,.].].;.d ].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].A S I T Y I ].].].].].].].s d -.]...d ].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].Z S J Q E U ].].].].].].].].s d d d d ].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].Z Z H I U U I ].].].].].].].].d d d ].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].Z Z S J I T R P ].].].].].].].d s s ].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].Z Z Z H R R ! ! G ].].].].].].].d ].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].Z Z D E ^ ( W D ].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].Z Z A F J D Z ].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].Z Z S ].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].",
|
||||
"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].]."
|
||||
};
|
||||
@@ -0,0 +1,276 @@
|
||||
# Mlx large test
|
||||
|
||||
import sys
|
||||
from mlx import Mlx # Import Mlx class
|
||||
|
||||
class ImgData:
|
||||
"""Structure for image data"""
|
||||
def __init__(self):
|
||||
self.img = None
|
||||
self.width = 0
|
||||
self.height = 0
|
||||
self.data = None
|
||||
self.sl = 0 # size line
|
||||
self.bpp = 0 # bits per pixel
|
||||
self.iformat = 0
|
||||
|
||||
class XVar:
|
||||
"""Structure for main vars"""
|
||||
def __init__(self):
|
||||
self.mlx = None
|
||||
self.mlx_ptr = None
|
||||
self.screen_w = 0
|
||||
self.screen_h = 0
|
||||
self.win_1 = None
|
||||
self.win_2 = None
|
||||
self.img_1 = ImgData()
|
||||
self.img_2 = ImgData()
|
||||
self.img_png = ImgData()
|
||||
self.img_xpm = ImgData()
|
||||
self.imgidx = 0
|
||||
|
||||
def draw_colormap(xvar):
|
||||
"""Draw the colormap"""
|
||||
print("Drawing colormap...")
|
||||
for i in range(400):
|
||||
for j in range(400):
|
||||
r = int((0xFF * i) / 400)
|
||||
g = int((0xFF * j) / 400)
|
||||
b = int((0xFF * (400 - (i + j) // 2)) / 400)
|
||||
col = 0xFF000000 | (r << 16) | (g << 8) | b
|
||||
xvar.mlx.mlx_pixel_put(xvar.mlx_ptr, xvar.win_1, i, j, col)
|
||||
|
||||
def gere_key_press(key, xvar):
|
||||
print(f"Pressed key {key}")
|
||||
|
||||
def gere_key(key, xvar):
|
||||
print(f"Got key {key}: ", end="")
|
||||
|
||||
if key == 113: # 'q'
|
||||
xvar.mlx.mlx_do_key_autorepeatoff(xvar.mlx_ptr)
|
||||
print("key repeat off")
|
||||
return 0
|
||||
elif key == 119: # 'w'
|
||||
xvar.mlx.mlx_do_key_autorepeaton(xvar.mlx_ptr)
|
||||
print("key repeat on")
|
||||
return 0
|
||||
elif key == 101: # 'e'
|
||||
draw_colormap(xvar)
|
||||
print("colormap")
|
||||
return 0
|
||||
elif key == 114: # 'r'
|
||||
xvar.mlx.mlx_mouse_hide(xvar.mlx_ptr)
|
||||
print("mouse hide")
|
||||
return 0
|
||||
elif key == 116: # 't'
|
||||
xvar.mlx.mlx_mouse_show(xvar.mlx_ptr)
|
||||
print("mouse show")
|
||||
return 0
|
||||
elif key == 121: # 'y'
|
||||
xvar.mlx.mlx_mouse_move(xvar.win_1, 200, 200)
|
||||
print("mouse move")
|
||||
return 0
|
||||
elif key == 117: # 'u'
|
||||
ret, x, y = xvar.mlx.mlx_mouse_get_pos(xvar.win_1)
|
||||
print(f"current mouse pos is {x} x {y}")
|
||||
return 0
|
||||
elif key == 105: # 'i'
|
||||
xvar.mlx.mlx_sync(xvar.mlx_ptr, Mlx.SYNC_IMAGE_WRITABLE, xvar.img_2.img)
|
||||
# fill image in white
|
||||
for offset in range(0, xvar.img_2.sl * 100, 4):
|
||||
xvar.img_2.data[offset:offset+4] = (0xFFFFFFFF).to_bytes(4, 'little')
|
||||
|
||||
xvar.mlx.mlx_put_image_to_window(xvar.mlx_ptr, xvar.win_1, xvar.img_2.img, 50, 50)
|
||||
|
||||
# update in red
|
||||
for offset in range(0, xvar.img_2.sl * 100, 4):
|
||||
xvar.img_2.data[offset:offset+4] = (0xFFFF0000).to_bytes(4, 'little')
|
||||
|
||||
xvar.mlx.mlx_put_image_to_window(xvar.mlx_ptr, xvar.win_1, xvar.img_2.img, 250, 250)
|
||||
print("update image without sync - most likely 2 red squares")
|
||||
return 0
|
||||
elif key == 111: # 'o'
|
||||
xvar.mlx.mlx_sync(xvar.mlx_ptr, Mlx.SYNC_IMAGE_WRITABLE, xvar.img_2.img)
|
||||
# fill image in white
|
||||
for offset in range(0, xvar.img_2.sl * 100, 4):
|
||||
xvar.img_2.data[offset:offset+4] = (0xFFFFFFFF).to_bytes(4, 'little')
|
||||
|
||||
xvar.mlx.mlx_put_image_to_window(xvar.mlx_ptr, xvar.win_1, xvar.img_2.img, 50, 50)
|
||||
xvar.mlx.mlx_sync(xvar.mlx_ptr, Mlx.SYNC_IMAGE_WRITABLE, xvar.img_2.img)
|
||||
|
||||
# update in red
|
||||
for offset in range(0, xvar.img_2.sl * 100, 4):
|
||||
xvar.img_2.data[offset:offset+4] = (0xFFFF0000).to_bytes(4, 'little')
|
||||
|
||||
xvar.mlx.mlx_put_image_to_window(xvar.mlx_ptr, xvar.win_1, xvar.img_2.img, 250, 250)
|
||||
print("update image with sync - white and red squares")
|
||||
return 0
|
||||
|
||||
# Default
|
||||
print("clear and string put")
|
||||
xvar.mlx.mlx_clear_window(xvar.mlx_ptr, xvar.win_1)
|
||||
xvar.mlx.mlx_string_put(xvar.mlx_ptr, xvar.win_1, 20, 20, 0xFFFF00FF, "Hello MLX!")
|
||||
|
||||
|
||||
def gere_expose(xvar):
|
||||
print("Expose !")
|
||||
xvar.mlx.mlx_put_image_to_window(xvar.mlx_ptr, xvar.win_1, xvar.img_1.img, 0, 0)
|
||||
xvar.mlx.mlx_put_image_to_window(xvar.mlx_ptr, xvar.win_1, xvar.img_1.img, 201, 201)
|
||||
|
||||
def gere_mouse(button, x, y, xvar, win):
|
||||
print(f"Got mouse : {button} at {x}x{y}")
|
||||
|
||||
if button == 1:
|
||||
xvar.mlx.mlx_put_image_to_window(xvar.mlx_ptr, win, xvar.img_1.img, 100, 100)
|
||||
return 0
|
||||
|
||||
if button == 3: # right click
|
||||
if xvar.imgidx % 2:
|
||||
xvar.mlx.mlx_put_image_to_window(xvar.mlx_ptr, win, xvar.img_png.img, x, y)
|
||||
else:
|
||||
xvar.mlx.mlx_put_image_to_window(xvar.mlx_ptr, win, xvar.img_xpm.img, x, y)
|
||||
xvar.imgidx += 1
|
||||
|
||||
def gere_mouse_1(button, x, y, xvar):
|
||||
gere_mouse(button, x, y, xvar, xvar.win_1)
|
||||
|
||||
def gere_mouse_2(button, x, y, xvar):
|
||||
gere_mouse(button, x, y, xvar, xvar.win_2)
|
||||
|
||||
def gere_close_1(xvar):
|
||||
xvar.mlx.mlx_loop_exit(xvar.mlx_ptr)
|
||||
|
||||
def gere_close_2(xvar):
|
||||
xvar.mlx.mlx_destroy_window(xvar.mlx_ptr, xvar.win_2)
|
||||
xvar.win_2 = None
|
||||
|
||||
def main():
|
||||
xvar = XVar()
|
||||
# Mlx Initialisation
|
||||
try:
|
||||
xvar.mlx = Mlx()
|
||||
except Exception as e:
|
||||
print(f"Error: Can't initialize MLX: {e}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
xvar.mlx_ptr = xvar.mlx.mlx_init()
|
||||
|
||||
ret, xvar.screen_w, xvar.screen_h = xvar.mlx.mlx_get_screen_size(xvar.mlx_ptr)
|
||||
print(f"Screen size: {xvar.screen_w} x {xvar.screen_h}")
|
||||
|
||||
# Windows creation
|
||||
try:
|
||||
xvar.win_1 = xvar.mlx.mlx_new_window(xvar.mlx_ptr, 400, 400, "MLX main win")
|
||||
if not xvar.win_1:
|
||||
raise Exception("Can't create main window")
|
||||
|
||||
xvar.win_2 = xvar.mlx.mlx_new_window(xvar.mlx_ptr, 150, 150, "Secondary window")
|
||||
if not xvar.win_2:
|
||||
raise Exception("Can't create secondary window")
|
||||
except Exception as e:
|
||||
print(f"Error Win create: {e}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
# Image #1
|
||||
xvar.img_1.img = xvar.mlx.mlx_new_image(xvar.mlx_ptr, 200, 200)
|
||||
if not xvar.img_1.img:
|
||||
raise Exception("Can't create image 1")
|
||||
|
||||
xvar.img_1.width = 200
|
||||
xvar.img_1.height = 200
|
||||
xvar.img_1.data, xvar.img_1.bpp, xvar.img_1.sl, xvar.img_1.iformat = \
|
||||
xvar.mlx.mlx_get_data_addr(xvar.img_1.img)
|
||||
|
||||
# Fill image #1
|
||||
for i in range(xvar.img_1.sl * 200):
|
||||
xvar.img_1.data[i] = 0x80
|
||||
|
||||
for i in range(xvar.img_1.sl * 100):
|
||||
xvar.img_1.data[i] = 0xFF
|
||||
|
||||
try:
|
||||
# Add some red pixels
|
||||
pixel_positions = [
|
||||
0 * 200 * 4, # top left
|
||||
(1 * 200 + 1) * 4, # top left + 1
|
||||
(199 * 200 + 199) * 4, # bottom right
|
||||
(198 * 200 + 198) * 4 # bottom right - 1
|
||||
]
|
||||
|
||||
for pos in pixel_positions:
|
||||
if pos < len(xvar.img_1.data) - 3:
|
||||
xvar.img_1.data[pos:pos+4] = (0xFFFF0000).to_bytes(4, 'little')
|
||||
except Exception as e:
|
||||
print(f"Error img1: {e}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
# Image #2
|
||||
try:
|
||||
xvar.img_2.img = xvar.mlx.mlx_new_image(xvar.mlx_ptr, 100, 100)
|
||||
if not xvar.img_2.img:
|
||||
raise Exception("Can't create image 2")
|
||||
|
||||
xvar.img_2.width = 100
|
||||
xvar.img_2.height = 100
|
||||
xvar.img_2.data, xvar.img_2.bpp, xvar.img_2.sl, xvar.img_2.iformat = \
|
||||
xvar.mlx.mlx_get_data_addr(xvar.img_2.img)
|
||||
except Exception as e:
|
||||
print(f"Error img2: {e}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
# Load PNG & XPM
|
||||
result = xvar.mlx.mlx_png_file_to_image(xvar.mlx_ptr, "puffy_small.png")
|
||||
if not result:
|
||||
raise Exception("Can't load PNG")
|
||||
xvar.img_png.img, xvar.img_png.width, xvar.img_png.height = result
|
||||
if not xvar.img_png.img:
|
||||
raise Exception("Can't create png")
|
||||
xvar.img_png.data, xvar.img_png.bpp, xvar.img_png.sl, xvar.img_png.iformat = \
|
||||
xvar.mlx.mlx_get_data_addr(xvar.img_png.img)
|
||||
|
||||
result = xvar.mlx.mlx_xpm_file_to_image(xvar.mlx_ptr, "Dont_panic.xpm")
|
||||
if not result:
|
||||
raise Exception("Can't load XPM")
|
||||
xvar.img_xpm.img, xvar.img_xpm.width, xvar.img_xpm.height = result
|
||||
xvar.img_xpm.data, xvar.img_xpm.bpp, xvar.img_xpm.sl, xvar.img_xpm.iformat = \
|
||||
xvar.mlx.mlx_get_data_addr(xvar.img_xpm.img)
|
||||
|
||||
# event hooks
|
||||
xvar.mlx.mlx_key_hook(xvar.win_1, gere_key, xvar)
|
||||
xvar.mlx.mlx_hook(xvar.win_2, 2, 1, gere_key_press, xvar) # KeyPress event
|
||||
xvar.mlx.mlx_expose_hook(xvar.win_1, gere_expose, xvar)
|
||||
xvar.mlx.mlx_mouse_hook(xvar.win_1, gere_mouse_1, xvar)
|
||||
xvar.mlx.mlx_mouse_hook(xvar.win_2, gere_mouse_2, xvar)
|
||||
xvar.mlx.mlx_hook(xvar.win_1, 33, 0, gere_close_1, xvar) # WM_DELETE_WINDOW
|
||||
xvar.mlx.mlx_hook(xvar.win_2, 33, 0, gere_close_2, xvar) # WM_DELETE_WINDOW
|
||||
|
||||
# User Instructions
|
||||
print("On main window:")
|
||||
print(" mouse button 1: place white/gray image in 0x0 and 200x200")
|
||||
print(" mouse button 2: place png image and xpm image, alternatively")
|
||||
print(" try keys QWERTYUIO and others")
|
||||
print(" click window's X button to end the program")
|
||||
print("On secondary window (smaller):")
|
||||
print(" show key pressed for auto repeat")
|
||||
print(" click window's X button to close it")
|
||||
|
||||
# Main loop
|
||||
xvar.mlx.mlx_loop(xvar.mlx_ptr)
|
||||
|
||||
# Cleaning resources
|
||||
print("destroy xpm")
|
||||
xvar.mlx.mlx_destroy_image(xvar.mlx_ptr, xvar.img_xpm.img)
|
||||
print("destroy png")
|
||||
xvar.mlx.mlx_destroy_image(xvar.mlx_ptr, xvar.img_png.img)
|
||||
print("destroy imgs")
|
||||
xvar.mlx.mlx_destroy_image(xvar.mlx_ptr, xvar.img_1.img)
|
||||
xvar.mlx.mlx_destroy_image(xvar.mlx_ptr, xvar.img_2.img)
|
||||
print("destroy win(s)")
|
||||
xvar.mlx.mlx_destroy_window(xvar.mlx_ptr, xvar.win_1)
|
||||
if xvar.win_2:
|
||||
xvar.mlx.mlx_destroy_window(xvar.mlx_ptr, xvar.win_2)
|
||||
print("destroy mlx")
|
||||
xvar.mlx.mlx_release(xvar.mlx_ptr)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 105 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 6.1 KiB |
@@ -0,0 +1,29 @@
|
||||
|
||||
from mlx import Mlx
|
||||
|
||||
def mymouse(button, x, y, mystuff):
|
||||
print(f"Got mouse event! button {button} at {x},{y}.")
|
||||
|
||||
def mykey(keynum, mystuff):
|
||||
print(f"Got key {keynum}, and got my stuff back:")
|
||||
print(mystuff)
|
||||
if keynum == 32:
|
||||
m.mlx_mouse_hook(win_ptr, None, None)
|
||||
|
||||
def gere_close(dummy):
|
||||
m.mlx_loop_exit(mlx_ptr)
|
||||
|
||||
m = Mlx()
|
||||
mlx_ptr = m.mlx_init()
|
||||
win_ptr = m.mlx_new_window(mlx_ptr, 200, 200, "win title")
|
||||
m.mlx_clear_window(mlx_ptr, win_ptr)
|
||||
m.mlx_string_put(mlx_ptr, win_ptr, 20, 20, 255, "Hello PyMlx!")
|
||||
(ret, w, h) = m.mlx_get_screen_size(mlx_ptr)
|
||||
print(f"Got screen size: {w} x {h} .")
|
||||
|
||||
stuff = [1, 2]
|
||||
m.mlx_mouse_hook(win_ptr, mymouse, None)
|
||||
m.mlx_key_hook(win_ptr, mykey, stuff)
|
||||
m.mlx_hook(win_ptr, 33, 0, gere_close, None)
|
||||
|
||||
m.mlx_loop(mlx_ptr)
|
||||
Reference in New Issue
Block a user