master update
This commit is contained in:
commit
b2f2cced4a
35 changed files with 6229 additions and 5159 deletions
6
NTMakefile
generated
6
NTMakefile
generated
|
|
@ -79,7 +79,9 @@ clean:
|
||||||
del /f /q src\widget\box.obj
|
del /f /q src\widget\box.obj
|
||||||
del /f /q src\widget\button.obj
|
del /f /q src\widget\button.obj
|
||||||
del /f /q src\widget\calendar.obj
|
del /f /q src\widget\calendar.obj
|
||||||
|
del /f /q src\widget\chart.obj
|
||||||
del /f /q src\widget\checkbox.obj
|
del /f /q src\widget\checkbox.obj
|
||||||
|
del /f /q src\widget\clock.obj
|
||||||
del /f /q src\widget\combobox.obj
|
del /f /q src\widget\combobox.obj
|
||||||
del /f /q src\widget\entry.obj
|
del /f /q src\widget\entry.obj
|
||||||
del /f /q src\widget\frame.obj
|
del /f /q src\widget\frame.obj
|
||||||
|
|
@ -320,8 +322,8 @@ examples\gldemos\tripaint.obj: examples/gldemos/tripaint.c
|
||||||
$(CC) $(EXE_CFLAGS) /Fo$@ examples/gldemos/tripaint.c
|
$(CC) $(EXE_CFLAGS) /Fo$@ examples/gldemos/tripaint.c
|
||||||
|
|
||||||
|
|
||||||
src\Mw.dll: external\libz\src\adler32.obj external\libz\src\compress.obj external\libz\src\crc32.obj external\libz\src\deflate.obj external\libz\src\gzclose.obj external\libz\src\gzlib.obj external\libz\src\gzread.obj external\libz\src\gzwrite.obj external\libz\src\infback.obj external\libz\src\inffast.obj external\libz\src\inflate.obj external\libz\src\inftrees.obj external\libz\src\trees.obj external\libz\src\uncompr.obj external\libz\src\zutil.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\abstract\charset.obj src\abstract\directory.obj src\abstract\dynamic.obj src\abstract\time.obj src\backend\gdi.obj src\color.obj src\core.obj src\cursor\arrow.obj src\cursor\cross.obj src\cursor\default.obj src\cursor\hidden.obj src\cursor\text.obj src\default.obj src\dialog\colorpicker.obj src\dialog\directorychooser.obj src\dialog\filechooser.obj src\dialog\messagebox.obj src\draw.obj src\icon\back.obj src\icon\clock.obj src\icon\computer.obj src\icon\directory.obj src\icon\down.obj src\icon\error.obj src\icon\file.obj src\icon\forward.obj src\icon\info.obj src\icon\left.obj src\icon\news.obj src\icon\note.obj src\icon\right.obj src\icon\search.obj src\icon\up.obj src\icon\warning.obj src\lowlevel.obj src\string.obj src\text\font\boldfont.obj src\text\font\boldmonottf.obj src\text\font\boldttf.obj src\text\font\font.obj src\text\font\monottf.obj src\text\font\ttf.obj src\text\ft2.obj src\text\gdi.obj src\text\stbtt.obj src\text\text.obj src\truetype.obj src\unicode.obj src\widget\box.obj src\widget\button.obj src\widget\calendar.obj src\widget\checkbox.obj src\widget\combobox.obj src\widget\entry.obj src\widget\frame.obj src\widget\image.obj src\widget\label.obj src\widget\listbox.obj src\widget\menu.obj src\widget\numberentry.obj src\widget\opengl.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\scrollbar.obj src\widget\separator.obj src\widget\submenu.obj src\widget\subwindow.obj src\widget\tab.obj src\widget\table.obj src\widget\treeview.obj src\widget\viewport.obj src\widget\window.obj
|
src\Mw.dll: external\libz\src\adler32.obj external\libz\src\compress.obj external\libz\src\crc32.obj external\libz\src\deflate.obj external\libz\src\gzclose.obj external\libz\src\gzlib.obj external\libz\src\gzread.obj external\libz\src\gzwrite.obj external\libz\src\infback.obj external\libz\src\inffast.obj external\libz\src\inflate.obj external\libz\src\inftrees.obj external\libz\src\trees.obj external\libz\src\uncompr.obj external\libz\src\zutil.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\abstract\charset.obj src\abstract\directory.obj src\abstract\dynamic.obj src\abstract\time.obj src\backend\gdi.obj src\color.obj src\core.obj src\cursor\arrow.obj src\cursor\cross.obj src\cursor\default.obj src\cursor\hidden.obj src\cursor\text.obj src\default.obj src\dialog\colorpicker.obj src\dialog\directorychooser.obj src\dialog\filechooser.obj src\dialog\messagebox.obj src\draw.obj src\icon\back.obj src\icon\clock.obj src\icon\computer.obj src\icon\directory.obj src\icon\down.obj src\icon\error.obj src\icon\file.obj src\icon\forward.obj src\icon\info.obj src\icon\left.obj src\icon\news.obj src\icon\note.obj src\icon\right.obj src\icon\search.obj src\icon\up.obj src\icon\warning.obj src\lowlevel.obj src\string.obj src\text\font\boldfont.obj src\text\font\boldmonottf.obj src\text\font\boldttf.obj src\text\font\font.obj src\text\font\monottf.obj src\text\font\ttf.obj src\text\ft2.obj src\text\gdi.obj src\text\stbtt.obj src\text\text.obj src\truetype.obj src\unicode.obj src\widget\box.obj src\widget\button.obj src\widget\calendar.obj src\widget\chart.obj src\widget\checkbox.obj src\widget\clock.obj src\widget\combobox.obj src\widget\entry.obj src\widget\frame.obj src\widget\image.obj src\widget\label.obj src\widget\listbox.obj src\widget\menu.obj src\widget\numberentry.obj src\widget\opengl.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\scrollbar.obj src\widget\separator.obj src\widget\submenu.obj src\widget\subwindow.obj src\widget\tab.obj src\widget\table.obj src\widget\treeview.obj src\widget\viewport.obj src\widget\window.obj
|
||||||
$(LD) $(MW_LDFLAGS) /OUT:$@ external\libz\src\adler32.obj external\libz\src\compress.obj external\libz\src\crc32.obj external\libz\src\deflate.obj external\libz\src\gzclose.obj external\libz\src\gzlib.obj external\libz\src\gzread.obj external\libz\src\gzwrite.obj external\libz\src\infback.obj external\libz\src\inffast.obj external\libz\src\inflate.obj external\libz\src\inftrees.obj external\libz\src\trees.obj external\libz\src\uncompr.obj external\libz\src\zutil.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\abstract\charset.obj src\abstract\directory.obj src\abstract\dynamic.obj src\abstract\time.obj src\backend\gdi.obj src\color.obj src\core.obj src\cursor\arrow.obj src\cursor\cross.obj src\cursor\default.obj src\cursor\hidden.obj src\cursor\text.obj src\default.obj src\dialog\colorpicker.obj src\dialog\directorychooser.obj src\dialog\filechooser.obj src\dialog\messagebox.obj src\draw.obj src\icon\back.obj src\icon\clock.obj src\icon\computer.obj src\icon\directory.obj src\icon\down.obj src\icon\error.obj src\icon\file.obj src\icon\forward.obj src\icon\info.obj src\icon\left.obj src\icon\news.obj src\icon\note.obj src\icon\right.obj src\icon\search.obj src\icon\up.obj src\icon\warning.obj src\lowlevel.obj src\string.obj src\text\font\boldfont.obj src\text\font\boldmonottf.obj src\text\font\boldttf.obj src\text\font\font.obj src\text\font\monottf.obj src\text\font\ttf.obj src\text\ft2.obj src\text\gdi.obj src\text\stbtt.obj src\text\text.obj src\truetype.obj src\unicode.obj src\widget\box.obj src\widget\button.obj src\widget\calendar.obj src\widget\checkbox.obj src\widget\combobox.obj src\widget\entry.obj src\widget\frame.obj src\widget\image.obj src\widget\label.obj src\widget\listbox.obj src\widget\menu.obj src\widget\numberentry.obj src\widget\opengl.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\scrollbar.obj src\widget\separator.obj src\widget\submenu.obj src\widget\subwindow.obj src\widget\tab.obj src\widget\table.obj src\widget\treeview.obj src\widget\viewport.obj src\widget\window.obj opengl32.lib gdi32.lib ole32.lib uuid.lib user32.lib advapi32.lib
|
$(LD) $(MW_LDFLAGS) /OUT:$@ external\libz\src\adler32.obj external\libz\src\compress.obj external\libz\src\crc32.obj external\libz\src\deflate.obj external\libz\src\gzclose.obj external\libz\src\gzlib.obj external\libz\src\gzread.obj external\libz\src\gzwrite.obj external\libz\src\infback.obj external\libz\src\inffast.obj external\libz\src\inflate.obj external\libz\src\inftrees.obj external\libz\src\trees.obj external\libz\src\uncompr.obj external\libz\src\zutil.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\abstract\charset.obj src\abstract\directory.obj src\abstract\dynamic.obj src\abstract\time.obj src\backend\gdi.obj src\color.obj src\core.obj src\cursor\arrow.obj src\cursor\cross.obj src\cursor\default.obj src\cursor\hidden.obj src\cursor\text.obj src\default.obj src\dialog\colorpicker.obj src\dialog\directorychooser.obj src\dialog\filechooser.obj src\dialog\messagebox.obj src\draw.obj src\icon\back.obj src\icon\clock.obj src\icon\computer.obj src\icon\directory.obj src\icon\down.obj src\icon\error.obj src\icon\file.obj src\icon\forward.obj src\icon\info.obj src\icon\left.obj src\icon\news.obj src\icon\note.obj src\icon\right.obj src\icon\search.obj src\icon\up.obj src\icon\warning.obj src\lowlevel.obj src\string.obj src\text\font\boldfont.obj src\text\font\boldmonottf.obj src\text\font\boldttf.obj src\text\font\font.obj src\text\font\monottf.obj src\text\font\ttf.obj src\text\ft2.obj src\text\gdi.obj src\text\stbtt.obj src\text\text.obj src\truetype.obj src\unicode.obj src\widget\box.obj src\widget\button.obj src\widget\calendar.obj src\widget\chart.obj src\widget\checkbox.obj src\widget\clock.obj src\widget\combobox.obj src\widget\entry.obj src\widget\frame.obj src\widget\image.obj src\widget\label.obj src\widget\listbox.obj src\widget\menu.obj src\widget\numberentry.obj src\widget\opengl.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\scrollbar.obj src\widget\separator.obj src\widget\submenu.obj src\widget\subwindow.obj src\widget\tab.obj src\widget\table.obj src\widget\treeview.obj src\widget\viewport.obj src\widget\window.obj opengl32.lib gdi32.lib ole32.lib uuid.lib user32.lib advapi32.lib
|
||||||
|
|
||||||
|
|
||||||
.c.obj:
|
.c.obj:
|
||||||
|
|
|
||||||
10
WatMakefile
generated
10
WatMakefile
generated
|
|
@ -78,7 +78,9 @@ clean: .SYMBOLIC
|
||||||
%erase src/widget/box.obj
|
%erase src/widget/box.obj
|
||||||
%erase src/widget/button.obj
|
%erase src/widget/button.obj
|
||||||
%erase src/widget/calendar.obj
|
%erase src/widget/calendar.obj
|
||||||
|
%erase src/widget/chart.obj
|
||||||
%erase src/widget/checkbox.obj
|
%erase src/widget/checkbox.obj
|
||||||
|
%erase src/widget/clock.obj
|
||||||
%erase src/widget/combobox.obj
|
%erase src/widget/combobox.obj
|
||||||
%erase src/widget/entry.obj
|
%erase src/widget/entry.obj
|
||||||
%erase src/widget/frame.obj
|
%erase src/widget/frame.obj
|
||||||
|
|
@ -319,8 +321,8 @@ examples/gldemos/tripaint.obj: examples/gldemos/tripaint.c
|
||||||
$(CC) $(EXE_CFLAGS) -fo=$@ examples/gldemos/tripaint.c
|
$(CC) $(EXE_CFLAGS) -fo=$@ examples/gldemos/tripaint.c
|
||||||
|
|
||||||
|
|
||||||
src/Mw.dll: external/libz/src/adler32.obj external/libz/src/compress.obj external/libz/src/crc32.obj external/libz/src/deflate.obj external/libz/src/gzclose.obj external/libz/src/gzlib.obj external/libz/src/gzread.obj external/libz/src/gzwrite.obj external/libz/src/infback.obj external/libz/src/inffast.obj external/libz/src/inflate.obj external/libz/src/inftrees.obj external/libz/src/trees.obj external/libz/src/uncompr.obj external/libz/src/zutil.obj external/stb_ds.obj external/stb_image.obj external/stb_truetype.obj src/abstract/charset.obj src/abstract/directory.obj src/abstract/dynamic.obj src/abstract/time.obj src/backend/gdi.obj src/color.obj src/core.obj src/cursor/arrow.obj src/cursor/cross.obj src/cursor/default.obj src/cursor/hidden.obj src/cursor/text.obj src/default.obj src/dialog/colorpicker.obj src/dialog/directorychooser.obj src/dialog/filechooser.obj src/dialog/messagebox.obj src/draw.obj src/icon/back.obj src/icon/clock.obj src/icon/computer.obj src/icon/directory.obj src/icon/down.obj src/icon/error.obj src/icon/file.obj src/icon/forward.obj src/icon/info.obj src/icon/left.obj src/icon/news.obj src/icon/note.obj src/icon/right.obj src/icon/search.obj src/icon/up.obj src/icon/warning.obj src/lowlevel.obj src/string.obj src/text/font/boldfont.obj src/text/font/boldmonottf.obj src/text/font/boldttf.obj src/text/font/font.obj src/text/font/monottf.obj src/text/font/ttf.obj src/text/ft2.obj src/text/gdi.obj src/text/stbtt.obj src/text/text.obj src/truetype.obj src/unicode.obj src/widget/box.obj src/widget/button.obj src/widget/calendar.obj src/widget/checkbox.obj src/widget/combobox.obj src/widget/entry.obj src/widget/frame.obj src/widget/image.obj src/widget/label.obj src/widget/listbox.obj src/widget/menu.obj src/widget/numberentry.obj src/widget/opengl.obj src/widget/progressbar.obj src/widget/radiobox.obj src/widget/scrollbar.obj src/widget/separator.obj src/widget/submenu.obj src/widget/subwindow.obj src/widget/tab.obj src/widget/table.obj src/widget/treeview.obj src/widget/viewport.obj src/widget/window.obj
|
src/Mw.dll: external/libz/src/adler32.obj external/libz/src/compress.obj external/libz/src/crc32.obj external/libz/src/deflate.obj external/libz/src/gzclose.obj external/libz/src/gzlib.obj external/libz/src/gzread.obj external/libz/src/gzwrite.obj external/libz/src/infback.obj external/libz/src/inffast.obj external/libz/src/inflate.obj external/libz/src/inftrees.obj external/libz/src/trees.obj external/libz/src/uncompr.obj external/libz/src/zutil.obj external/stb_ds.obj external/stb_image.obj external/stb_truetype.obj src/abstract/charset.obj src/abstract/directory.obj src/abstract/dynamic.obj src/abstract/time.obj src/backend/gdi.obj src/color.obj src/core.obj src/cursor/arrow.obj src/cursor/cross.obj src/cursor/default.obj src/cursor/hidden.obj src/cursor/text.obj src/default.obj src/dialog/colorpicker.obj src/dialog/directorychooser.obj src/dialog/filechooser.obj src/dialog/messagebox.obj src/draw.obj src/icon/back.obj src/icon/clock.obj src/icon/computer.obj src/icon/directory.obj src/icon/down.obj src/icon/error.obj src/icon/file.obj src/icon/forward.obj src/icon/info.obj src/icon/left.obj src/icon/news.obj src/icon/note.obj src/icon/right.obj src/icon/search.obj src/icon/up.obj src/icon/warning.obj src/lowlevel.obj src/string.obj src/text/font/boldfont.obj src/text/font/boldmonottf.obj src/text/font/boldttf.obj src/text/font/font.obj src/text/font/monottf.obj src/text/font/ttf.obj src/text/ft2.obj src/text/gdi.obj src/text/stbtt.obj src/text/text.obj src/truetype.obj src/unicode.obj src/widget/box.obj src/widget/button.obj src/widget/calendar.obj src/widget/chart.obj src/widget/checkbox.obj src/widget/clock.obj src/widget/combobox.obj src/widget/entry.obj src/widget/frame.obj src/widget/image.obj src/widget/label.obj src/widget/listbox.obj src/widget/menu.obj src/widget/numberentry.obj src/widget/opengl.obj src/widget/progressbar.obj src/widget/radiobox.obj src/widget/scrollbar.obj src/widget/separator.obj src/widget/submenu.obj src/widget/subwindow.obj src/widget/tab.obj src/widget/table.obj src/widget/treeview.obj src/widget/viewport.obj src/widget/window.obj
|
||||||
$(LD) $(MW_LDFLAGS) option implib=src/Mw.lib name $@ file external/libz/src/adler32.obj file external/libz/src/compress.obj file external/libz/src/crc32.obj file external/libz/src/deflate.obj file external/libz/src/gzclose.obj file external/libz/src/gzlib.obj file external/libz/src/gzread.obj file external/libz/src/gzwrite.obj file external/libz/src/infback.obj file external/libz/src/inffast.obj file external/libz/src/inflate.obj file external/libz/src/inftrees.obj file external/libz/src/trees.obj file external/libz/src/uncompr.obj file external/libz/src/zutil.obj file external/stb_ds.obj file external/stb_image.obj file external/stb_truetype.obj file src/abstract/charset.obj file src/abstract/directory.obj file src/abstract/dynamic.obj file src/abstract/time.obj file src/backend/gdi.obj file src/color.obj file src/core.obj file src/cursor/arrow.obj file src/cursor/cross.obj file src/cursor/default.obj file src/cursor/hidden.obj file src/cursor/text.obj file src/default.obj file src/dialog/colorpicker.obj file src/dialog/directorychooser.obj file src/dialog/filechooser.obj file src/dialog/messagebox.obj file src/draw.obj file src/icon/back.obj file src/icon/clock.obj file src/icon/computer.obj file src/icon/directory.obj file src/icon/down.obj file src/icon/error.obj file src/icon/file.obj file src/icon/forward.obj file src/icon/info.obj file src/icon/left.obj file src/icon/news.obj file src/icon/note.obj file src/icon/right.obj file src/icon/search.obj file src/icon/up.obj file src/icon/warning.obj file src/lowlevel.obj file src/string.obj file src/text/font/boldfont.obj file src/text/font/boldmonottf.obj file src/text/font/boldttf.obj file src/text/font/font.obj file src/text/font/monottf.obj file src/text/font/ttf.obj file src/text/ft2.obj file src/text/gdi.obj file src/text/stbtt.obj file src/text/text.obj file src/truetype.obj file src/unicode.obj file src/widget/box.obj file src/widget/button.obj file src/widget/calendar.obj file src/widget/checkbox.obj file src/widget/combobox.obj file src/widget/entry.obj file src/widget/frame.obj file src/widget/image.obj file src/widget/label.obj file src/widget/listbox.obj file src/widget/menu.obj file src/widget/numberentry.obj file src/widget/opengl.obj file src/widget/progressbar.obj file src/widget/radiobox.obj file src/widget/scrollbar.obj file src/widget/separator.obj file src/widget/submenu.obj file src/widget/subwindow.obj file src/widget/tab.obj file src/widget/table.obj file src/widget/treeview.obj file src/widget/viewport.obj file src/widget/window.obj library clib3r.lib library opengl32.lib library gdi32.lib library ole32.lib library uuid.lib library user32.lib library advapi32.lib
|
$(LD) $(MW_LDFLAGS) option implib=src/Mw.lib name $@ file external/libz/src/adler32.obj file external/libz/src/compress.obj file external/libz/src/crc32.obj file external/libz/src/deflate.obj file external/libz/src/gzclose.obj file external/libz/src/gzlib.obj file external/libz/src/gzread.obj file external/libz/src/gzwrite.obj file external/libz/src/infback.obj file external/libz/src/inffast.obj file external/libz/src/inflate.obj file external/libz/src/inftrees.obj file external/libz/src/trees.obj file external/libz/src/uncompr.obj file external/libz/src/zutil.obj file external/stb_ds.obj file external/stb_image.obj file external/stb_truetype.obj file src/abstract/charset.obj file src/abstract/directory.obj file src/abstract/dynamic.obj file src/abstract/time.obj file src/backend/gdi.obj file src/color.obj file src/core.obj file src/cursor/arrow.obj file src/cursor/cross.obj file src/cursor/default.obj file src/cursor/hidden.obj file src/cursor/text.obj file src/default.obj file src/dialog/colorpicker.obj file src/dialog/directorychooser.obj file src/dialog/filechooser.obj file src/dialog/messagebox.obj file src/draw.obj file src/icon/back.obj file src/icon/clock.obj file src/icon/computer.obj file src/icon/directory.obj file src/icon/down.obj file src/icon/error.obj file src/icon/file.obj file src/icon/forward.obj file src/icon/info.obj file src/icon/left.obj file src/icon/news.obj file src/icon/note.obj file src/icon/right.obj file src/icon/search.obj file src/icon/up.obj file src/icon/warning.obj file src/lowlevel.obj file src/string.obj file src/text/font/boldfont.obj file src/text/font/boldmonottf.obj file src/text/font/boldttf.obj file src/text/font/font.obj file src/text/font/monottf.obj file src/text/font/ttf.obj file src/text/ft2.obj file src/text/gdi.obj file src/text/stbtt.obj file src/text/text.obj file src/truetype.obj file src/unicode.obj file src/widget/box.obj file src/widget/button.obj file src/widget/calendar.obj file src/widget/chart.obj file src/widget/checkbox.obj file src/widget/clock.obj file src/widget/combobox.obj file src/widget/entry.obj file src/widget/frame.obj file src/widget/image.obj file src/widget/label.obj file src/widget/listbox.obj file src/widget/menu.obj file src/widget/numberentry.obj file src/widget/opengl.obj file src/widget/progressbar.obj file src/widget/radiobox.obj file src/widget/scrollbar.obj file src/widget/separator.obj file src/widget/submenu.obj file src/widget/subwindow.obj file src/widget/tab.obj file src/widget/table.obj file src/widget/treeview.obj file src/widget/viewport.obj file src/widget/window.obj library clib3r.lib library opengl32.lib library gdi32.lib library ole32.lib library uuid.lib library user32.lib library advapi32.lib
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -462,8 +464,12 @@ src/widget/button.obj: src/widget/button.c
|
||||||
$(CC) $(MW_CFLAGS) -fo=$@ src/widget/button.c
|
$(CC) $(MW_CFLAGS) -fo=$@ src/widget/button.c
|
||||||
src/widget/calendar.obj: src/widget/calendar.c
|
src/widget/calendar.obj: src/widget/calendar.c
|
||||||
$(CC) $(MW_CFLAGS) -fo=$@ src/widget/calendar.c
|
$(CC) $(MW_CFLAGS) -fo=$@ src/widget/calendar.c
|
||||||
|
src/widget/chart.obj: src/widget/chart.c
|
||||||
|
$(CC) $(MW_CFLAGS) -fo=$@ src/widget/chart.c
|
||||||
src/widget/checkbox.obj: src/widget/checkbox.c
|
src/widget/checkbox.obj: src/widget/checkbox.c
|
||||||
$(CC) $(MW_CFLAGS) -fo=$@ src/widget/checkbox.c
|
$(CC) $(MW_CFLAGS) -fo=$@ src/widget/checkbox.c
|
||||||
|
src/widget/clock.obj: src/widget/clock.c
|
||||||
|
$(CC) $(MW_CFLAGS) -fo=$@ src/widget/clock.c
|
||||||
src/widget/combobox.obj: src/widget/combobox.c
|
src/widget/combobox.obj: src/widget/combobox.c
|
||||||
$(CC) $(MW_CFLAGS) -fo=$@ src/widget/combobox.c
|
$(CC) $(MW_CFLAGS) -fo=$@ src/widget/combobox.c
|
||||||
src/widget/entry.obj: src/widget/entry.c
|
src/widget/entry.obj: src/widget/entry.c
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
#define PaddingContent 2
|
#define PaddingContent 2
|
||||||
|
|
||||||
MwWidget window, menu, table;
|
MwWidget window, menu, table;
|
||||||
|
MwWidget wcal, wclock;
|
||||||
MwMenu e;
|
MwMenu e;
|
||||||
|
|
||||||
static void MWAPI resize(MwWidget handle, void* user, void* call) {
|
static void MWAPI resize(MwWidget handle, void* user, void* call) {
|
||||||
|
|
@ -21,6 +22,24 @@ static void MWAPI resize(MwWidget handle, void* user, void* call) {
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void MWAPI tick(MwWidget handle, void* user, void* call) {
|
||||||
|
time_t t = time(NULL);
|
||||||
|
struct tm tm = *localtime(&t);
|
||||||
|
|
||||||
|
MwVaApply(wcal,
|
||||||
|
MwNyear, (int)tm.tm_year + 1900,
|
||||||
|
MwNmonth, (int)tm.tm_mon,
|
||||||
|
MwNdate, (int)tm.tm_mday,
|
||||||
|
MwNday, (int)tm.tm_wday,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
MwVaApply(wclock,
|
||||||
|
MwNhour, (int)tm.tm_hour,
|
||||||
|
MwNminute, (int)tm.tm_min,
|
||||||
|
MwNsecond, (int)tm.tm_sec,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
static void MWAPI resize_content(MwWidget handle, void* user, void* call) {
|
static void MWAPI resize_content(MwWidget handle, void* user, void* call) {
|
||||||
MwWidget* ws = MwGetChildren(handle);
|
MwWidget* ws = MwGetChildren(handle);
|
||||||
if(ws != NULL) {
|
if(ws != NULL) {
|
||||||
|
|
@ -241,9 +260,27 @@ int main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
f = frame("Calendar", -PaddingContent, -PaddingContent, MwCalendarClass,
|
f = frame("Calendar", -PaddingContent, -PaddingContent, MwCalendarClass,
|
||||||
MwNscale, 1,
|
MwNscale, 1,
|
||||||
|
NULL);
|
||||||
|
wcal = child(f);
|
||||||
|
|
||||||
|
f = frame("Clock", -PaddingContent, -PaddingContent, MwClockClass, NULL);
|
||||||
|
wclock = child(f);
|
||||||
|
|
||||||
|
f = frame("Chart", -PaddingContent, -PaddingContent, MwChartClass,
|
||||||
|
MwNtype, MwCHART_PIE,
|
||||||
|
MwNcolumnSpan, 2,
|
||||||
NULL);
|
NULL);
|
||||||
|
w = child(f);
|
||||||
|
MwChartAdd(w, -1, "A", -800, NULL);
|
||||||
|
MwChartAdd(w, -1, "B", -400, NULL);
|
||||||
|
MwChartAdd(w, -1, "C", -200, NULL);
|
||||||
|
MwChartAdd(w, -1, "D", -100, NULL);
|
||||||
|
MwChartAdd(w, -1, "E", 100, NULL);
|
||||||
|
MwChartAdd(w, -1, "F", 200, NULL);
|
||||||
|
MwChartAdd(w, -1, "G", 400, NULL);
|
||||||
|
MwChartAdd(w, -1, "H", 800, NULL);
|
||||||
|
|
||||||
f = frame("ComboBox", -PaddingContent, 24, MwComboBoxClass, NULL);
|
f = frame("ComboBox", -PaddingContent, 24, MwComboBoxClass, NULL);
|
||||||
w = child(f);
|
w = child(f);
|
||||||
|
|
@ -257,6 +294,7 @@ int main() {
|
||||||
|
|
||||||
f = frame("Label", -PaddingContent, -PaddingContent, MwLabelClass,
|
f = frame("Label", -PaddingContent, -PaddingContent, MwLabelClass,
|
||||||
MwNtext, "Epic text\nNewline can be used too!",
|
MwNtext, "Epic text\nNewline can be used too!",
|
||||||
|
MwNcolumnSpan, 2,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
f = frame("ListBox", -PaddingContent, -PaddingContent, MwListBoxClass,
|
f = frame("ListBox", -PaddingContent, -PaddingContent, MwListBoxClass,
|
||||||
|
|
@ -290,9 +328,7 @@ int main() {
|
||||||
MwNtitle, "Sub window 2",
|
MwNtitle, "Sub window 2",
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
f = frame("Tab", -PaddingContent, -PaddingContent, MwTabClass,
|
f = frame("Tab", -PaddingContent, -PaddingContent, MwTabClass, NULL);
|
||||||
MwNcolumnSpan, 2,
|
|
||||||
NULL);
|
|
||||||
w = child(f);
|
w = child(f);
|
||||||
MwSetText(MwTabAdd(w, "ABC"), MwNbackground, "#f00");
|
MwSetText(MwTabAdd(w, "ABC"), MwNbackground, "#f00");
|
||||||
MwSetText(MwTabAdd(w, "DEF"), MwNbackground, "#0f0");
|
MwSetText(MwTabAdd(w, "DEF"), MwNbackground, "#0f0");
|
||||||
|
|
@ -312,7 +348,9 @@ int main() {
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
MwAddUserHandler(window, MwNresizeHandler, resize, NULL);
|
MwAddUserHandler(window, MwNresizeHandler, resize, NULL);
|
||||||
|
MwAddUserHandler(window, MwNtickHandler, tick, NULL);
|
||||||
|
|
||||||
|
tick(window, NULL, NULL);
|
||||||
resize(window, NULL, NULL);
|
resize(window, NULL, NULL);
|
||||||
|
|
||||||
MwVaApply(table,
|
MwVaApply(table,
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#ifndef M_PI
|
#ifndef M_PI
|
||||||
#define M_PI 3.14159265
|
#define M_PI 3.14159265359
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SIZE 100
|
#define SIZE 100
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#ifndef M_PI
|
#ifndef M_PI
|
||||||
#define M_PI 3.14159265
|
#define M_PI 3.14159265359
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -113,6 +113,12 @@ enum MwCLIPBOARD {
|
||||||
MwCLIPBOARD_PRIMARY,
|
MwCLIPBOARD_PRIMARY,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum MwCHART {
|
||||||
|
MwCHART_BAR = 0,
|
||||||
|
MwCHART_3D_BAR,
|
||||||
|
MwCHART_PIE
|
||||||
|
};
|
||||||
|
|
||||||
enum MwMOUSE {
|
enum MwMOUSE {
|
||||||
MwMOUSE_LEFT = 1,
|
MwMOUSE_LEFT = 1,
|
||||||
MwMOUSE_MIDDLE,
|
MwMOUSE_MIDDLE,
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,13 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief Get a color difference for shadow
|
||||||
|
* @param handle Widget
|
||||||
|
* @return Color difference
|
||||||
|
*/
|
||||||
|
MWDECL int MWAPI MwGetColorDifference(MwWidget handle);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @brief Parses a color text
|
* @brief Parses a color text
|
||||||
* @param handle Widget
|
* @param handle Widget
|
||||||
|
|
@ -45,6 +52,13 @@ MWDECL void MWAPI MwColorTableInit(void);
|
||||||
*/
|
*/
|
||||||
MWDECL MwLLColor MWAPI MwLightenColor(MwWidget handle, MwLLColor color, int r, int g, int b);
|
MWDECL MwLLColor MWAPI MwLightenColor(MwWidget handle, MwLLColor color, int r, int g, int b);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief Fix a rectangle
|
||||||
|
* @param handle Widget
|
||||||
|
* @param rect Rectangle area
|
||||||
|
*/
|
||||||
|
MWDECL void MWAPI MwFixRect(MwRect* rect);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @brief Draws a filled rectangle
|
* @brief Draws a filled rectangle
|
||||||
* @param handle Widget
|
* @param handle Widget
|
||||||
|
|
@ -53,6 +67,14 @@ MWDECL MwLLColor MWAPI MwLightenColor(MwWidget handle, MwLLColor color, int r, i
|
||||||
*/
|
*/
|
||||||
MWDECL void MWAPI MwDrawRect(MwWidget handle, MwRect* rect, MwLLColor color);
|
MWDECL void MWAPI MwDrawRect(MwWidget handle, MwRect* rect, MwLLColor color);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief Draws a rectangle
|
||||||
|
* @param handle Widget
|
||||||
|
* @param rect Rectangle area
|
||||||
|
* @param color Color
|
||||||
|
*/
|
||||||
|
MWDECL void MWAPI MwDrawRectLine(MwWidget handle, MwRect* rect, MwLLColor color);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @brief Draws a filled rectangle that fades to a darker color
|
* @brief Draws a filled rectangle that fades to a darker color
|
||||||
* @param handle Widget
|
* @param handle Widget
|
||||||
|
|
|
||||||
|
|
@ -485,10 +485,6 @@ int MwLLWaylandHyprlandGetRoundness(void);
|
||||||
|
|
||||||
void MwLLWaylandHangUntilConfigured(MwLL handle);
|
void MwLLWaylandHangUntilConfigured(MwLL handle);
|
||||||
|
|
||||||
MwBool MwLLWaylandWidgetIsDestroyed(MwLL self);
|
|
||||||
void MwLLWaylandWidgetUndestroy(MwLL self);
|
|
||||||
void MwLLWaylandChildrenIterate(MwLL handle, void (*func)(MwLL handle, MwLL child));
|
|
||||||
|
|
||||||
/* Function for setting up the callbacks/structs that will be registered upon the relevant interfaces being found. */
|
/* Function for setting up the callbacks/structs that will be registered upon the relevant interfaces being found. */
|
||||||
void MwLLWaylandSetupCallbacks(struct _MwLLWayland* wayland);
|
void MwLLWaylandSetupCallbacks(struct _MwLLWayland* wayland);
|
||||||
|
|
||||||
|
|
@ -500,19 +496,11 @@ void MwLLWaylandFlush(MwLL handle);
|
||||||
void MwLLWaylandCascadeChildren(MwLL handle);
|
void MwLLWaylandCascadeChildren(MwLL handle);
|
||||||
|
|
||||||
/* Standard procedure before event callbacks in Wayland */
|
/* Standard procedure before event callbacks in Wayland */
|
||||||
#define WAYLAND_EVENT_OP_START(self) \
|
#define WAYLAND_EVENT_OP_START(self)
|
||||||
if(MwLLWaylandWidgetIsDestroyed(self)) { \
|
|
||||||
return; \
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Footer for WAYLAND_EVENT_OP_START */
|
/* Footer for WAYLAND_EVENT_OP_START */
|
||||||
#define WAYLAND_EVENT_OP_END(self)
|
#define WAYLAND_EVENT_OP_END(self)
|
||||||
|
|
||||||
#define WIDGET_CHECK(handle) \
|
|
||||||
if(!handle->wayland.valid) { \
|
|
||||||
return; \
|
|
||||||
}
|
|
||||||
|
|
||||||
/* the two decoration manager constructs */
|
/* the two decoration manager constructs */
|
||||||
typedef struct zxdg_decoration_manager_v1_context {
|
typedef struct zxdg_decoration_manager_v1_context {
|
||||||
struct zxdg_decoration_manager_v1* manager;
|
struct zxdg_decoration_manager_v1* manager;
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef M_PI
|
#ifndef M_PI
|
||||||
#define M_PI 3.14159265
|
#define M_PI 3.14159265359
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Windows */
|
/* Windows */
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,9 @@
|
||||||
#include <Mw/Widget/Box.h>
|
#include <Mw/Widget/Box.h>
|
||||||
#include <Mw/Widget/Button.h>
|
#include <Mw/Widget/Button.h>
|
||||||
#include <Mw/Widget/Calendar.h>
|
#include <Mw/Widget/Calendar.h>
|
||||||
|
#include <Mw/Widget/Chart.h>
|
||||||
#include <Mw/Widget/CheckBox.h>
|
#include <Mw/Widget/CheckBox.h>
|
||||||
|
#include <Mw/Widget/Clock.h>
|
||||||
#include <Mw/Widget/ComboBox.h>
|
#include <Mw/Widget/ComboBox.h>
|
||||||
#include <Mw/Widget/Entry.h>
|
#include <Mw/Widget/Entry.h>
|
||||||
#include <Mw/Widget/Frame.h>
|
#include <Mw/Widget/Frame.h>
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,10 @@
|
||||||
#define MwNrowSpan "IrowSpan"
|
#define MwNrowSpan "IrowSpan"
|
||||||
#define MwNdisabled "Idisabled"
|
#define MwNdisabled "Idisabled"
|
||||||
#define MwNacceptsDnD "IacceptsDnD"
|
#define MwNacceptsDnD "IacceptsDnD"
|
||||||
|
#define MwNhour "Ihour"
|
||||||
|
#define MwNminute "Iminute"
|
||||||
|
#define MwNsecond "Isecond"
|
||||||
|
#define MwNtype "Itype"
|
||||||
|
|
||||||
#define MwNtitle "Stitle"
|
#define MwNtitle "Stitle"
|
||||||
#define MwNtext "Stext"
|
#define MwNtext "Stext"
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,8 @@ typedef struct _MwBox* MwBox;
|
||||||
typedef struct _MwSubWindow* MwSubWindow;
|
typedef struct _MwSubWindow* MwSubWindow;
|
||||||
typedef struct _MwTab* MwTab;
|
typedef struct _MwTab* MwTab;
|
||||||
typedef struct _MwTable* MwTable;
|
typedef struct _MwTable* MwTable;
|
||||||
|
typedef struct _MwChartEntry MwChartEntry;
|
||||||
|
typedef struct _MwChart* MwChart;
|
||||||
typedef struct _MwMouse MwMouse;
|
typedef struct _MwMouse MwMouse;
|
||||||
typedef struct _MwTTFInfo* MwTTFInfo;
|
typedef struct _MwTTFInfo* MwTTFInfo;
|
||||||
#ifdef _MILSKO
|
#ifdef _MILSKO
|
||||||
|
|
@ -247,6 +249,16 @@ struct _MwTab {
|
||||||
char** names;
|
char** names;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct _MwChartEntry {
|
||||||
|
char* name;
|
||||||
|
char* color;
|
||||||
|
double value;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _MwChart {
|
||||||
|
MwChartEntry* entries;
|
||||||
|
};
|
||||||
|
|
||||||
struct _MwMouse {
|
struct _MwMouse {
|
||||||
MwPoint point;
|
MwPoint point;
|
||||||
int button;
|
int button;
|
||||||
|
|
|
||||||
57
include/Mw/Widget/Chart.h
Normal file
57
include/Mw/Widget/Chart.h
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
/*!
|
||||||
|
* @file Mw/Widget/Chart.h
|
||||||
|
* @brief Chart widget
|
||||||
|
*/
|
||||||
|
#ifndef __MW_WIDGET_CHART_H__
|
||||||
|
#define __MW_WIDGET_CHART_H__
|
||||||
|
|
||||||
|
#include <Mw/MachDep.h>
|
||||||
|
#include <Mw/TypeDefs.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief Chart widget class
|
||||||
|
*/
|
||||||
|
MWDECL MwClass MwChartClass;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief Adds the entry to the chart
|
||||||
|
* @param handle Widget
|
||||||
|
* @param index Index
|
||||||
|
* @param text Text
|
||||||
|
* @param value Value
|
||||||
|
* @return Index
|
||||||
|
*/
|
||||||
|
MwInline int MwChartAdd(MwWidget handle, int index, const char* text, double value, const char* color) {
|
||||||
|
int out;
|
||||||
|
|
||||||
|
MwVaWidgetExecute(handle, "mwChartAdd", (void*)&out, index, text, value, color);
|
||||||
|
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief Deletes item from the chart
|
||||||
|
* @param handle Widget
|
||||||
|
* @param index Index
|
||||||
|
*/
|
||||||
|
MwInline void MwChartDelete(MwWidget handle, int index) {
|
||||||
|
MwVaWidgetExecute(handle, "mwChartDelete", NULL, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief Resets the chart
|
||||||
|
* @param handle Widget
|
||||||
|
*/
|
||||||
|
MwInline void MwChartReset(MwWidget handle) {
|
||||||
|
MwVaWidgetExecute(handle, "mwChartReset", NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
24
include/Mw/Widget/Clock.h
Normal file
24
include/Mw/Widget/Clock.h
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
/*!
|
||||||
|
* @file Mw/Widget/Clock.h
|
||||||
|
* @brief Clock widget
|
||||||
|
*/
|
||||||
|
#ifndef __MW_WIDGET_CLOCK_H__
|
||||||
|
#define __MW_WIDGET_CLOCK_H__
|
||||||
|
|
||||||
|
#include <Mw/MachDep.h>
|
||||||
|
#include <Mw/TypeDefs.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief Clock widget class
|
||||||
|
*/
|
||||||
|
MWDECL MwClass MwClockClass;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -41,6 +41,23 @@ MwInline const char* MwComboBoxGet(MwWidget handle, int index) {
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief Deletes the entry from combobox
|
||||||
|
* @param handle Widget
|
||||||
|
* @param index Index
|
||||||
|
*/
|
||||||
|
MwInline void MwComboBoxDelete(MwWidget handle, int index) {
|
||||||
|
MwVaWidgetExecute(handle, "mwComboBoxDelete", NULL, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief Resets the combobox
|
||||||
|
* @param handle Widget
|
||||||
|
*/
|
||||||
|
MwInline void MwComboBoxReset(MwWidget handle) {
|
||||||
|
MwVaWidgetExecute(handle, "mwComboBoxReset", NULL);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
65
milsko.xml
65
milsko.xml
|
|
@ -1,10 +1,11 @@
|
||||||
<?xml version="1.0" ?>
|
<?xml version="1.0" ?>
|
||||||
<!--
|
<!--
|
||||||
Basically, you have to implement 10+n types:
|
Basically, you have to implement 11+n types:
|
||||||
- Integer (int)
|
- Integer (int)
|
||||||
- Unsigned integer (unsigned int)
|
- Unsigned integer (unsigned int)
|
||||||
- Short integer (short)
|
- Short integer (short)
|
||||||
- Unsigned short integer (unsigned short)
|
- Unsigned short integer (unsigned short)
|
||||||
|
- Double (double)
|
||||||
- String (char*)
|
- String (char*)
|
||||||
- Pointer (void*)
|
- Pointer (void*)
|
||||||
- Struct and pointer to it
|
- Struct and pointer to it
|
||||||
|
|
@ -106,6 +107,10 @@
|
||||||
<integer name="columns" />
|
<integer name="columns" />
|
||||||
<integer name="columnSpan" column="yes" />
|
<integer name="columnSpan" column="yes" />
|
||||||
<integer name="rowSpan" column="yes" />
|
<integer name="rowSpan" column="yes" />
|
||||||
|
<integer name="hour" />
|
||||||
|
<integer name="minute" />
|
||||||
|
<integer name="second" />
|
||||||
|
<integer name="type" />
|
||||||
|
|
||||||
<!-- waitMS is a special property, only applies to toplevel widget -->
|
<!-- waitMS is a special property, only applies to toplevel widget -->
|
||||||
<integer name="waitMS" common="yes" />
|
<integer name="waitMS" common="yes" />
|
||||||
|
|
@ -225,6 +230,11 @@
|
||||||
<integer name="MwCLIPBOARD_MAIN">0</integer>
|
<integer name="MwCLIPBOARD_MAIN">0</integer>
|
||||||
<integer name="MwCLIPBOARD_PRIMARY" />
|
<integer name="MwCLIPBOARD_PRIMARY" />
|
||||||
</enumeration>
|
</enumeration>
|
||||||
|
<enumeration name="MwCHART">
|
||||||
|
<integer name="MwCHART_BAR">0</integer>
|
||||||
|
<integer name="MwCHART_3D_BAR" />
|
||||||
|
<integer name="MwCHART_PIE" />
|
||||||
|
</enumeration>
|
||||||
<enumeration name="MwMOUSE">
|
<enumeration name="MwMOUSE">
|
||||||
<integer name="MwMOUSE_LEFT">1</integer>
|
<integer name="MwMOUSE_LEFT">1</integer>
|
||||||
<integer name="MwMOUSE_MIDDLE" />
|
<integer name="MwMOUSE_MIDDLE" />
|
||||||
|
|
@ -646,6 +656,31 @@
|
||||||
<property name="scale" />
|
<property name="scale" />
|
||||||
</properties>
|
</properties>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget name="Chart">
|
||||||
|
<properties>
|
||||||
|
<property name="type" />
|
||||||
|
<property name="minValue" />
|
||||||
|
<property name="maxValue" />
|
||||||
|
</properties>
|
||||||
|
<functions>
|
||||||
|
<function name="Set">
|
||||||
|
<return>
|
||||||
|
<integer />
|
||||||
|
</return>
|
||||||
|
<arguments>
|
||||||
|
<integer name="index" />
|
||||||
|
<string name="text" />
|
||||||
|
<double name="value" />
|
||||||
|
<string name="color" />
|
||||||
|
</arguments>
|
||||||
|
</function>
|
||||||
|
<function name="Delete">
|
||||||
|
<arguments>
|
||||||
|
<integer name="index" />
|
||||||
|
</arguments>
|
||||||
|
</function>
|
||||||
|
</functions>
|
||||||
|
</widget>
|
||||||
<widget name="CheckBox">
|
<widget name="CheckBox">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="checked" />
|
<property name="checked" />
|
||||||
|
|
@ -654,6 +689,13 @@
|
||||||
<handler name="changed" />
|
<handler name="changed" />
|
||||||
</handlers>
|
</handlers>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget name="Clock">
|
||||||
|
<properties>
|
||||||
|
<property name="hour" />
|
||||||
|
<property name="minute" />
|
||||||
|
<property name="second" />
|
||||||
|
</properties>
|
||||||
|
</widget>
|
||||||
<widget name="Entry">
|
<widget name="Entry">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="text" />
|
<property name="text" />
|
||||||
|
|
@ -869,9 +911,26 @@
|
||||||
</handlers>
|
</handlers>
|
||||||
<functions>
|
<functions>
|
||||||
<function name="Add">
|
<function name="Add">
|
||||||
<integer name="index" />
|
<arguments>
|
||||||
<string name="text" />
|
<integer name="index" />
|
||||||
|
<string name="text" />
|
||||||
|
</arguments>
|
||||||
</function>
|
</function>
|
||||||
|
<function name="Get">
|
||||||
|
<return>
|
||||||
|
<string />
|
||||||
|
</return>
|
||||||
|
<arguments>
|
||||||
|
<integer name="index" />
|
||||||
|
<string name="text" />
|
||||||
|
</arguments>
|
||||||
|
</function>
|
||||||
|
<function name="Delete">
|
||||||
|
<arguments>
|
||||||
|
<integer name="index" />
|
||||||
|
</arguments>
|
||||||
|
</function>
|
||||||
|
<function name="Reset" />
|
||||||
</functions>
|
</functions>
|
||||||
</widget>
|
</widget>
|
||||||
<widget name="TreeView">
|
<widget name="TreeView">
|
||||||
|
|
|
||||||
|
|
@ -152,6 +152,8 @@ new_object("src/widget/box.c");
|
||||||
new_object("src/widget/button.c");
|
new_object("src/widget/button.c");
|
||||||
new_object("src/widget/calendar.c");
|
new_object("src/widget/calendar.c");
|
||||||
new_object("src/widget/checkbox.c");
|
new_object("src/widget/checkbox.c");
|
||||||
|
new_object("src/widget/chart.c");
|
||||||
|
new_object("src/widget/clock.c");
|
||||||
new_object("src/widget/combobox.c");
|
new_object("src/widget/combobox.c");
|
||||||
new_object("src/widget/entry.c");
|
new_object("src/widget/entry.c");
|
||||||
new_object("src/widget/frame.c");
|
new_object("src/widget/frame.c");
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -2,8 +2,7 @@
|
||||||
|
|
||||||
char* MwACPTextToUTF8Text(const char* input) {
|
char* MwACPTextToUTF8Text(const char* input) {
|
||||||
#if defined(_WIN32) && defined(MW_HAS_WCHAR)
|
#if defined(_WIN32) && defined(MW_HAS_WCHAR)
|
||||||
int mbbytes = (strlen(input) + 1) * 4;
|
int wbytes = 0;
|
||||||
int wbytes = 0;
|
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
wchar_t* wout;
|
wchar_t* wout;
|
||||||
|
|
@ -39,7 +38,6 @@ char* MwACPTextToUTF8Text(const char* input) {
|
||||||
char* MwUTF8TextToACPText(const char* input) {
|
char* MwUTF8TextToACPText(const char* input) {
|
||||||
#if defined(_WIN32) && defined(MW_HAS_WCHAR)
|
#if defined(_WIN32) && defined(MW_HAS_WCHAR)
|
||||||
int mbbytes = (strlen(input) + 1) * 4;
|
int mbbytes = (strlen(input) + 1) * 4;
|
||||||
int wbytes = 0;
|
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
wchar_t* wout;
|
wchar_t* wout;
|
||||||
|
|
|
||||||
|
|
@ -206,11 +206,13 @@ static void MwDirectoryJoinSingle(char* target, char* p) {
|
||||||
}
|
}
|
||||||
|
|
||||||
char* MwDirectoryJoin(char* a, char* b) {
|
char* MwDirectoryJoin(char* a, char* b) {
|
||||||
char* p = MwStringDuplicate(a);
|
char* p = malloc(strlen(a) + 3 + strlen(b));
|
||||||
char* bdup = MwStringDuplicate(b);
|
char* bdup = MwStringDuplicate(b);
|
||||||
char* b2 = bdup;
|
char* b2 = bdup;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
strcpy(p, a);
|
||||||
|
|
||||||
for(i = strlen(p) - 1; i >= 0; i--) {
|
for(i = strlen(p) - 1; i >= 0; i--) {
|
||||||
if(p[i] == DIRSEP) {
|
if(p[i] == DIRSEP) {
|
||||||
p[i] = 0;
|
p[i] = 0;
|
||||||
|
|
|
||||||
|
|
@ -1000,11 +1000,11 @@ static void MwLLMakeToolWindowImpl(MwLL handle) {
|
||||||
RECT rc;
|
RECT rc;
|
||||||
int w, h;
|
int w, h;
|
||||||
|
|
||||||
|
GetClientRect(handle->gdi.hWnd, &rc);
|
||||||
|
|
||||||
SetWindowLongPtr(handle->gdi.hWnd, GWL_STYLE, (LPARAM)lp);
|
SetWindowLongPtr(handle->gdi.hWnd, GWL_STYLE, (LPARAM)lp);
|
||||||
SetWindowLongPtr(handle->gdi.hWnd, GWL_EXSTYLE, (LPARAM)WS_EX_TOOLWINDOW);
|
SetWindowLongPtr(handle->gdi.hWnd, GWL_EXSTYLE, (LPARAM)WS_EX_TOOLWINDOW);
|
||||||
|
|
||||||
GetClientRect(handle->gdi.hWnd, &rc);
|
|
||||||
|
|
||||||
w = rc.right - rc.left;
|
w = rc.right - rc.left;
|
||||||
h = rc.bottom - rc.top;
|
h = rc.bottom - rc.top;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@
|
||||||
#include <linux/input-event-codes.h>
|
#include <linux/input-event-codes.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
#include <sys/poll.h>
|
#include <sys/poll.h>
|
||||||
|
|
||||||
static void setup_clipboard(MwLL self, struct wl_seat* wl_seat);
|
static void setup_clipboard(MwLL self, struct wl_seat* wl_seat);
|
||||||
|
|
@ -576,9 +577,9 @@ static void pointer_motion(void* data, struct wl_pointer* wl_pointer, MwU32 time
|
||||||
inArea |= self->wayland.framebuffer.surface == curSurface;
|
inArea |= self->wayland.framebuffer.surface == curSurface;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(self->wayland.backbuffer.surface) {
|
// if(self->wayland.backbuffer.surface) {
|
||||||
inArea |= self->wayland.backbuffer.surface == curSurface;
|
// inArea |= self->wayland.backbuffer.surface == curSurface;
|
||||||
}
|
// }
|
||||||
|
|
||||||
self->wayland.cur_mouse_pos.x = wl_fixed_to_int(surface_x);
|
self->wayland.cur_mouse_pos.x = wl_fixed_to_int(surface_x);
|
||||||
self->wayland.cur_mouse_pos.y = wl_fixed_to_int(surface_y);
|
self->wayland.cur_mouse_pos.y = wl_fixed_to_int(surface_y);
|
||||||
|
|
@ -601,7 +602,9 @@ static void pointer_motion(void* data, struct wl_pointer* wl_pointer, MwU32 time
|
||||||
}
|
}
|
||||||
MwLLWaylandCascadeChildren(self);
|
MwLLWaylandCascadeChildren(self);
|
||||||
}
|
}
|
||||||
|
if(self->wayland.backbuffer.surface) {
|
||||||
|
wl_pointer_set_cursor(self->wayland.pointer, self->wayland.pointer_serial, self->wayland.cursor.surface, 0, 0);
|
||||||
|
}
|
||||||
WAYLAND_EVENT_OP_END(self);
|
WAYLAND_EVENT_OP_END(self);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -632,6 +635,36 @@ static void recursive_dispatch_mouse_up(MwLL handle, MwMouse* p) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static bool hit_detect(MwLL child, MwLL* _topmost_parent, MwPoint* _point, MwPoint* _relative_mouse_pos, MwPoint* _absolute_pos) {
|
||||||
|
MwLL topmost_parent = child;
|
||||||
|
MwPoint point;
|
||||||
|
MwPoint relative_mouse_pos;
|
||||||
|
MwPoint absolute_pos;
|
||||||
|
|
||||||
|
absolute_pos.x = child->wayland.x;
|
||||||
|
absolute_pos.y = child->wayland.y;
|
||||||
|
while(topmost_parent->wayland.parent) {
|
||||||
|
topmost_parent = topmost_parent->wayland.parent;
|
||||||
|
if(topmost_parent) {
|
||||||
|
absolute_pos.x += topmost_parent->wayland.x;
|
||||||
|
absolute_pos.y += topmost_parent->wayland.y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
point = topmost_parent->wayland.cur_mouse_pos;
|
||||||
|
|
||||||
|
relative_mouse_pos.x = point.x - absolute_pos.x;
|
||||||
|
relative_mouse_pos.y = point.y - absolute_pos.y;
|
||||||
|
|
||||||
|
*_topmost_parent = topmost_parent;
|
||||||
|
*_point = point;
|
||||||
|
*_relative_mouse_pos = relative_mouse_pos;
|
||||||
|
*_absolute_pos = absolute_pos;
|
||||||
|
|
||||||
|
return point.x >= absolute_pos.x && point.x <= absolute_pos.x + child->wayland.ww &&
|
||||||
|
point.y >= absolute_pos.y && point.y <= absolute_pos.y + child->wayland.wh;
|
||||||
|
}
|
||||||
|
|
||||||
static void mouse_dispatch(MwLL self, MwMouse p, MwU32 state) {
|
static void mouse_dispatch(MwLL self, MwMouse p, MwU32 state) {
|
||||||
switch(state) {
|
switch(state) {
|
||||||
case WL_POINTER_BUTTON_STATE_PRESSED:
|
case WL_POINTER_BUTTON_STATE_PRESSED:
|
||||||
|
|
@ -653,23 +686,7 @@ static void mouse_dispatch(MwLL self, MwMouse p, MwU32 state) {
|
||||||
MwPoint relative_mouse_pos;
|
MwPoint relative_mouse_pos;
|
||||||
MwPoint absolute_pos;
|
MwPoint absolute_pos;
|
||||||
|
|
||||||
absolute_pos.x = child->wayland.x;
|
if(hit_detect(child, &topmost_parent, &point, &relative_mouse_pos, &absolute_pos)) {
|
||||||
absolute_pos.y = child->wayland.y;
|
|
||||||
while(topmost_parent->wayland.parent) {
|
|
||||||
topmost_parent = topmost_parent->wayland.parent;
|
|
||||||
if(topmost_parent) {
|
|
||||||
absolute_pos.x += topmost_parent->wayland.x;
|
|
||||||
absolute_pos.y += topmost_parent->wayland.y;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
point = topmost_parent->wayland.cur_mouse_pos;
|
|
||||||
relative_mouse_pos.x = point.x - absolute_pos.x;
|
|
||||||
relative_mouse_pos.y = point.y - absolute_pos.y;
|
|
||||||
|
|
||||||
if(
|
|
||||||
point.x >= absolute_pos.x && point.x <= absolute_pos.x + child->wayland.ww &&
|
|
||||||
point.y >= absolute_pos.y && point.y <= absolute_pos.y + child->wayland.wh) {
|
|
||||||
int idx = -1;
|
int idx = -1;
|
||||||
for(n = 0; n < arrlen(topmost_parent->wayland.currentlyHeldWidgets); n++) {
|
for(n = 0; n < arrlen(topmost_parent->wayland.currentlyHeldWidgets); n++) {
|
||||||
if(topmost_parent->wayland.currentlyHeldWidgets[n] == child) {
|
if(topmost_parent->wayland.currentlyHeldWidgets[n] == child) {
|
||||||
|
|
@ -703,8 +720,7 @@ static void pointer_button(void* data, struct wl_pointer* wl_pointer, MwU32 seri
|
||||||
MwLL self = data;
|
MwLL self = data;
|
||||||
MwMouse p;
|
MwMouse p;
|
||||||
MwLL topmost_parent = self;
|
MwLL topmost_parent = self;
|
||||||
int i;
|
MwBool inArea = MwFALSE;
|
||||||
MwBool inArea = MwFALSE;
|
|
||||||
|
|
||||||
(void)wl_pointer;
|
(void)wl_pointer;
|
||||||
(void)serial;
|
(void)serial;
|
||||||
|
|
@ -721,9 +737,7 @@ static void pointer_button(void* data, struct wl_pointer* wl_pointer, MwU32 seri
|
||||||
if(self->wayland.framebuffer.surface) {
|
if(self->wayland.framebuffer.surface) {
|
||||||
inArea |= self->wayland.framebuffer.surface == curSurface;
|
inArea |= self->wayland.framebuffer.surface == curSurface;
|
||||||
}
|
}
|
||||||
if(self->wayland.backbuffer.surface) {
|
|
||||||
inArea |= self->wayland.backbuffer.surface == curSurface;
|
|
||||||
}
|
|
||||||
if(inArea) {
|
if(inArea) {
|
||||||
switch(button) {
|
switch(button) {
|
||||||
case BTN_LEFT:
|
case BTN_LEFT:
|
||||||
|
|
@ -737,29 +751,21 @@ static void pointer_button(void* data, struct wl_pointer* wl_pointer, MwU32 seri
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
self->wayland.held_down = state == WL_POINTER_BUTTON_STATE_PRESSED;
|
self->wayland.held_down = state == WL_POINTER_BUTTON_STATE_PRESSED;
|
||||||
// switch(state) {
|
|
||||||
// case WL_POINTER_BUTTON_STATE_PRESSED:
|
|
||||||
// MwLLDispatch(self, down, &p);
|
|
||||||
// break;
|
|
||||||
// case WL_POINTER_BUTTON_STATE_RELEASED:
|
|
||||||
// MwLLDispatch(self, up, &p);
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
|
|
||||||
for(i = 0; i < arrlen(self->wayland.currentlyHeldWidgets); i++) {
|
arrsetlen(self->wayland.currentlyHeldWidgets, 0);
|
||||||
arrdel(self->wayland.currentlyHeldWidgets, i);
|
|
||||||
}
|
|
||||||
mouse_dispatch(self, p, state);
|
mouse_dispatch(self, p, state);
|
||||||
|
}
|
||||||
|
if(self->wayland.backbuffer.surface) {
|
||||||
if(!self->wayland.has_decorations && self->wayland.do_csd) {
|
if(!self->wayland.has_decorations && self->wayland.do_csd) {
|
||||||
if(state != WL_POINTER_BUTTON_STATE_RELEASED)
|
if(state != WL_POINTER_BUTTON_STATE_RELEASED)
|
||||||
xdg_borderless_step_mdown(self, p, serial);
|
xdg_borderless_step_mdown(self, p, serial);
|
||||||
else
|
else
|
||||||
xdg_borderless_step_mup(self, p, serial);
|
xdg_borderless_step_mup(self, p, serial);
|
||||||
}
|
}
|
||||||
|
|
||||||
MwLLForceRender(self);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MwLLForceRender(self);
|
||||||
|
|
||||||
WAYLAND_EVENT_OP_END(self);
|
WAYLAND_EVENT_OP_END(self);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -849,6 +855,32 @@ static void keyboard_leave(void* data,
|
||||||
WAYLAND_EVENT_OP_END(self);
|
WAYLAND_EVENT_OP_END(self);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void key_dispatch(MwLL self, int* k, MwBool down) {
|
||||||
|
if(self->common.user) {
|
||||||
|
MwWidget w = self->common.user;
|
||||||
|
int i, n;
|
||||||
|
for(i = 0; i < arrlen(w->children); i++) {
|
||||||
|
if(w->children[i]->lowlevel->wayland.type == MwLL_WAYLAND_SUBLEVEL) {
|
||||||
|
MwLL child = w->children[i]->lowlevel;
|
||||||
|
MwLL topmost_parent = child;
|
||||||
|
MwPoint point;
|
||||||
|
MwPoint relative_mouse_pos;
|
||||||
|
MwPoint absolute_pos;
|
||||||
|
|
||||||
|
if(hit_detect(child, &topmost_parent, &point, &relative_mouse_pos, &absolute_pos)) {
|
||||||
|
if(down) {
|
||||||
|
MwLLDispatch(child, key, k);
|
||||||
|
} else {
|
||||||
|
MwLLDispatch(child, key_released, k);
|
||||||
|
}
|
||||||
|
|
||||||
|
key_dispatch(child, k, down);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* `wl_keyboard.key` callback */
|
/* `wl_keyboard.key` callback */
|
||||||
static void keyboard_key(void* data,
|
static void keyboard_key(void* data,
|
||||||
struct wl_keyboard* wl_keyboard,
|
struct wl_keyboard* wl_keyboard,
|
||||||
|
|
@ -872,13 +904,10 @@ static void keyboard_key(void* data,
|
||||||
inArea |= self->wayland.framebuffer.surface == curSurface;
|
inArea |= self->wayland.framebuffer.surface == curSurface;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(self->wayland.backbuffer.surface) {
|
|
||||||
inArea |= self->wayland.backbuffer.surface == curSurface;
|
|
||||||
}
|
|
||||||
|
|
||||||
inArea |= (self == topmost_parent->wayland.focusedWidget);
|
inArea |= (self == topmost_parent->wayland.focusedWidget);
|
||||||
|
|
||||||
if(inArea) {
|
if(inArea) {
|
||||||
|
|
||||||
xkb_layout_index_t layout;
|
xkb_layout_index_t layout;
|
||||||
MwU32 levels;
|
MwU32 levels;
|
||||||
xkb_level_index_t level = 0;
|
xkb_level_index_t level = 0;
|
||||||
|
|
@ -962,13 +991,12 @@ static void keyboard_key(void* data,
|
||||||
|
|
||||||
if(key != -1) {
|
if(key != -1) {
|
||||||
if(state == WL_KEYBOARD_KEY_STATE_PRESSED) {
|
if(state == WL_KEYBOARD_KEY_STATE_PRESSED) {
|
||||||
recursive_dispatch_key(self, &key);
|
|
||||||
self->wayland.holding_key = MwTRUE;
|
self->wayland.holding_key = MwTRUE;
|
||||||
self->wayland.last_pressed_key = key;
|
self->wayland.last_pressed_key = key;
|
||||||
} else {
|
} else {
|
||||||
recursive_dispatch_key_released(self, &key);
|
|
||||||
self->wayland.holding_key = MwFALSE;
|
self->wayland.holding_key = MwFALSE;
|
||||||
}
|
}
|
||||||
|
key_dispatch(self, &key, state == WL_KEYBOARD_KEY_STATE_PRESSED);
|
||||||
self->wayland.start_time = MwTimeGetTick();
|
self->wayland.start_time = MwTimeGetTick();
|
||||||
self->wayland.next_elapsed = self->wayland.keyboard_delay;
|
self->wayland.next_elapsed = self->wayland.keyboard_delay;
|
||||||
}
|
}
|
||||||
|
|
@ -1061,21 +1089,30 @@ static void wl_seat_capabilities(void* data, struct wl_seat* wl_seat,
|
||||||
|
|
||||||
WAYLAND_EVENT_OP_START(self);
|
WAYLAND_EVENT_OP_START(self);
|
||||||
|
|
||||||
|
/* Always remember the seat itself, regardless of which capabilities it has - this is
|
||||||
|
* both what setup_clipboard()/setup_zwp_clipboard() below use, and what lets
|
||||||
|
* wl_seat_interface_destroy() release it later even on a keyboard-only seat. */
|
||||||
|
self->wayland.pointer_seat = wl_seat;
|
||||||
|
|
||||||
if(capabilities & WL_SEAT_CAPABILITY_KEYBOARD) {
|
if(capabilities & WL_SEAT_CAPABILITY_KEYBOARD) {
|
||||||
self->wayland.keyboard = wl_seat_get_keyboard(wl_seat);
|
self->wayland.keyboard = wl_seat_get_keyboard(wl_seat);
|
||||||
wl_keyboard_add_listener(self->wayland.keyboard, &keyboard_listener, data);
|
wl_keyboard_add_listener(self->wayland.keyboard, &keyboard_listener, data);
|
||||||
}
|
}
|
||||||
if(capabilities & WL_SEAT_CAPABILITY_POINTER) {
|
if(capabilities & WL_SEAT_CAPABILITY_POINTER) {
|
||||||
self->wayland.pointer_seat = wl_seat;
|
self->wayland.pointer = wl_seat_get_pointer(wl_seat);
|
||||||
self->wayland.pointer = wl_seat_get_pointer(wl_seat);
|
|
||||||
wl_pointer_add_listener(self->wayland.pointer, &pointer_listener, data);
|
wl_pointer_add_listener(self->wayland.pointer, &pointer_listener, data);
|
||||||
}
|
}
|
||||||
WAYLAND_EVENT_OP_END(self);
|
WAYLAND_EVENT_OP_END(self);
|
||||||
|
|
||||||
if(self->wayland.clipboard_manager.wl)
|
/* Only hooked up if this seat actually has a pointer: wl_data_device.get_data_device()
|
||||||
setup_clipboard(self, self->wayland.pointer_seat);
|
* requires a non-null seat, and pointer_seat is only ever null before the first
|
||||||
if(self->wayland.clipboard_manager.zwp)
|
* capabilities event has arrived at all. */
|
||||||
setup_zwp_clipboard(self, self->wayland.pointer_seat);
|
if(capabilities & WL_SEAT_CAPABILITY_POINTER) {
|
||||||
|
if(self->wayland.clipboard_manager.wl)
|
||||||
|
setup_clipboard(self, self->wayland.pointer_seat);
|
||||||
|
if(self->wayland.clipboard_manager.zwp)
|
||||||
|
setup_zwp_clipboard(self, self->wayland.pointer_seat);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static void output_geometry(void* data,
|
static void output_geometry(void* data,
|
||||||
|
|
@ -1129,8 +1166,9 @@ void xdg_wm_base_ping(void* data,
|
||||||
/* wl_seat setup function */
|
/* wl_seat setup function */
|
||||||
static wayland_protocol_t* wl_seat_setup(MwU32 name, MwLL ll, MwU32 version) {
|
static wayland_protocol_t* wl_seat_setup(MwU32 name, MwLL ll, MwU32 version) {
|
||||||
wayland_protocol_t* proto = malloc(sizeof(wayland_protocol_t));
|
wayland_protocol_t* proto = malloc(sizeof(wayland_protocol_t));
|
||||||
MwU32 ver = (version >= 4) ? 4 : 1;
|
MwU32 ver = (version >= 4) ? 4 : 1; /* version 4 needed for wl_seat_release */
|
||||||
proto->listener = malloc(sizeof(struct wl_seat_listener));
|
proto->listener = malloc(sizeof(struct wl_seat_listener));
|
||||||
|
proto->context = NULL;
|
||||||
|
|
||||||
((struct wl_seat_listener*)proto->listener)->name = wl_seat_name;
|
((struct wl_seat_listener*)proto->listener)->name = wl_seat_name;
|
||||||
((struct wl_seat_listener*)proto->listener)->capabilities = wl_seat_capabilities;
|
((struct wl_seat_listener*)proto->listener)->capabilities = wl_seat_capabilities;
|
||||||
|
|
@ -1141,7 +1179,31 @@ static wayland_protocol_t* wl_seat_setup(MwU32 name, MwLL ll, MwU32 version) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wl_seat_interface_destroy(struct _MwLLWayland* wayland, wayland_protocol_t* data) {
|
static void wl_seat_interface_destroy(struct _MwLLWayland* wayland, wayland_protocol_t* data) {
|
||||||
(void)wayland;
|
if(wayland->pointer != NULL) {
|
||||||
|
if(wl_proxy_get_version((struct wl_proxy*)wayland->pointer) >= WL_POINTER_RELEASE_SINCE_VERSION) {
|
||||||
|
wl_pointer_release(wayland->pointer);
|
||||||
|
} else {
|
||||||
|
wl_pointer_destroy(wayland->pointer);
|
||||||
|
}
|
||||||
|
wayland->pointer = NULL;
|
||||||
|
}
|
||||||
|
if(wayland->keyboard != NULL) {
|
||||||
|
if(wl_proxy_get_version((struct wl_proxy*)wayland->keyboard) >= WL_KEYBOARD_RELEASE_SINCE_VERSION) {
|
||||||
|
wl_keyboard_release(wayland->keyboard);
|
||||||
|
} else {
|
||||||
|
wl_keyboard_destroy(wayland->keyboard);
|
||||||
|
}
|
||||||
|
wayland->keyboard = NULL;
|
||||||
|
}
|
||||||
|
if(wayland->pointer_seat != NULL) {
|
||||||
|
if(wl_proxy_get_version((struct wl_proxy*)wayland->pointer_seat) >= WL_SEAT_RELEASE_SINCE_VERSION) {
|
||||||
|
wl_seat_release(wayland->pointer_seat);
|
||||||
|
} else {
|
||||||
|
wl_seat_destroy(wayland->pointer_seat);
|
||||||
|
}
|
||||||
|
wayland->pointer_seat = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
free(data->listener);
|
free(data->listener);
|
||||||
free(data);
|
free(data);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,39 +12,6 @@ MwBool MwWaylandVulkan = MwFALSE;
|
||||||
|
|
||||||
MwBool MwWaylandCairoOnly = MwFALSE;
|
MwBool MwWaylandCairoOnly = MwFALSE;
|
||||||
|
|
||||||
static pthread_mutex_t destroyedWidgetsTableMutex;
|
|
||||||
/*
|
|
||||||
* So Wayland, bless its soul; it keeps using callbacks LONG after they should not only be destroyed but the widget doesn't even exist anymore. Naturally, this causes use after free. so we fight fire with fire in the worst code i've ever written: by storing the freed pointers here, we disallow wayland from ever using them again. if something else is created that takes this slot, we remove it from the table.
|
|
||||||
*
|
|
||||||
* To illustrate how bad this code is: if Israel and Palestine found out I was doing this then the Israel/Palestine conflict would be solved because both world leaders would come to the conclusion that this code is the worst thing ever.
|
|
||||||
*/
|
|
||||||
static MwLL* destroyedWidgetsTable;
|
|
||||||
|
|
||||||
MwBool MwLLWaylandWidgetIsDestroyed(MwLL self) {
|
|
||||||
int i;
|
|
||||||
pthread_mutex_lock(&destroyedWidgetsTableMutex);
|
|
||||||
for(i = 0; i < arrlen(destroyedWidgetsTable); i++) {
|
|
||||||
if(self == destroyedWidgetsTable[i]) {
|
|
||||||
pthread_mutex_unlock(&destroyedWidgetsTableMutex);
|
|
||||||
return MwTRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pthread_mutex_unlock(&destroyedWidgetsTableMutex);
|
|
||||||
return MwFALSE;
|
|
||||||
}
|
|
||||||
void MwLLWaylandWidgetUndestroy(MwLL self) {
|
|
||||||
int i;
|
|
||||||
pthread_mutex_lock(&destroyedWidgetsTableMutex);
|
|
||||||
for(i = 0; i < arrlen(destroyedWidgetsTable); i++) {
|
|
||||||
if(self == destroyedWidgetsTable[i]) {
|
|
||||||
arrdel(destroyedWidgetsTable, i);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pthread_mutex_unlock(&destroyedWidgetsTableMutex);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MwLLWaylandChildrenIterate(MwLL handle, void (*func)(MwLL handle, MwLL child)) {
|
void MwLLWaylandChildrenIterate(MwLL handle, void (*func)(MwLL handle, MwLL child)) {
|
||||||
if(handle->common.user) {
|
if(handle->common.user) {
|
||||||
MwWidget w = handle->common.user;
|
MwWidget w = handle->common.user;
|
||||||
|
|
@ -76,7 +43,6 @@ static void recursive_dispatch_resize(MwLL handle) {
|
||||||
|
|
||||||
static void recursive_render(MwLL handle) {
|
static void recursive_render(MwLL handle) {
|
||||||
int i;
|
int i;
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
|
|
||||||
for(i = 0; i < arrlen(((MwWidget)handle->common.user)->children); i++) recursive_render(((MwWidget)handle->common.user)->children[i]->lowlevel);
|
for(i = 0; i < arrlen(((MwWidget)handle->common.user)->children); i++) recursive_render(((MwWidget)handle->common.user)->children[i]->lowlevel);
|
||||||
|
|
||||||
|
|
@ -381,8 +347,9 @@ static void destroy_toplevel(MwLL r) {
|
||||||
|
|
||||||
xkb_context_unref(r->wayland.xkb_context);
|
xkb_context_unref(r->wayland.xkb_context);
|
||||||
|
|
||||||
wl_pointer_destroy(r->wayland.pointer);
|
/* wl_pointer/wl_keyboard/wl_seat are torn down centrally in wl_seat_interface_destroy,
|
||||||
wl_keyboard_destroy(r->wayland.keyboard);
|
* after this function returns, so every widget type that binds a seat (toplevel, popup,
|
||||||
|
* layer surface) releases them the same way instead of leaking or double-freeing them. */
|
||||||
|
|
||||||
wl_surface_destroy(r->wayland.framebuffer.surface);
|
wl_surface_destroy(r->wayland.framebuffer.surface);
|
||||||
|
|
||||||
|
|
@ -721,6 +688,12 @@ static void destroy_widget(MwLL handle) {
|
||||||
|
|
||||||
MwLLShow(handle, MwFALSE);
|
MwLLShow(handle, MwFALSE);
|
||||||
|
|
||||||
|
if(wl_display_roundtrip(handle->wayland.display) == -1) {
|
||||||
|
printf("roundtrip failed\n");
|
||||||
|
raise(SIGTRAP);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
switch(handle->wayland.type) {
|
switch(handle->wayland.type) {
|
||||||
case MwLL_WAYLAND_TOPLEVEL:
|
case MwLL_WAYLAND_TOPLEVEL:
|
||||||
destroy_toplevel(handle);
|
destroy_toplevel(handle);
|
||||||
|
|
@ -864,12 +837,7 @@ static void widget_setup(MwLL r, MwLL parent, int x, int y, int width, int heigh
|
||||||
r->wayland.x = x;
|
r->wayland.x = x;
|
||||||
r->wayland.y = y;
|
r->wayland.y = y;
|
||||||
r->wayland.parent = parent;
|
r->wayland.parent = parent;
|
||||||
if(MwLLWaylandWidgetIsDestroyed(parent)) {
|
r->wayland.valid = MwTRUE;
|
||||||
r->wayland.valid = MwFALSE;
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
r->wayland.valid = MwTRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(ty == MwLL_WAYLAND_UNKNOWN) {
|
if(ty == MwLL_WAYLAND_UNKNOWN) {
|
||||||
if(parent == NULL) {
|
if(parent == NULL) {
|
||||||
|
|
@ -906,8 +874,6 @@ static void widget_setup(MwLL r, MwLL parent, int x, int y, int width, int heigh
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WIDGET_CHECK(r);
|
|
||||||
|
|
||||||
r->wayland.region = wl_compositor_create_region(r->wayland.compositor);
|
r->wayland.region = wl_compositor_create_region(r->wayland.compositor);
|
||||||
r->wayland.o_region = wl_compositor_create_region(r->wayland.compositor);
|
r->wayland.o_region = wl_compositor_create_region(r->wayland.compositor);
|
||||||
MwLLWaylandRegionSetup(r);
|
MwLLWaylandRegionSetup(r);
|
||||||
|
|
@ -1030,12 +996,9 @@ static MwLL MwLLCreateImpl(MwLL parent, int x, int y, int width, int height) {
|
||||||
MwLL r;
|
MwLL r;
|
||||||
r = malloc(sizeof(*r));
|
r = malloc(sizeof(*r));
|
||||||
memset(r, 0, sizeof(*r));
|
memset(r, 0, sizeof(*r));
|
||||||
|
pthread_mutex_init(&r->wayland.eventsMutex, NULL);
|
||||||
MwLLCreateCommon(r);
|
MwLLCreateCommon(r);
|
||||||
|
|
||||||
if(MwLLWaylandWidgetIsDestroyed(r)) {
|
|
||||||
MwLLWaylandWidgetUndestroy(r);
|
|
||||||
}
|
|
||||||
|
|
||||||
r->wayland.is_toplevel = parent == NULL;
|
r->wayland.is_toplevel = parent == NULL;
|
||||||
r->wayland.is_clipping = 0;
|
r->wayland.is_clipping = 0;
|
||||||
|
|
||||||
|
|
@ -1072,8 +1035,6 @@ static void MwLLDestroyImpl(MwLL handle) {
|
||||||
select_ret = select(1, NULL, NULL, NULL, &tv);
|
select_ret = select(1, NULL, NULL, NULL, &tv);
|
||||||
} while((select_ret == -1) && (errno == EINTR));
|
} while((select_ret == -1) && (errno == EINTR));
|
||||||
|
|
||||||
pthread_mutex_destroy(&handle->wayland.eventsMutex);
|
|
||||||
|
|
||||||
#ifdef USE_DBUS
|
#ifdef USE_DBUS
|
||||||
if(!wl_call_tbl.has_dbus) {
|
if(!wl_call_tbl.has_dbus) {
|
||||||
MwLLDBusFreeContext(&wl_call_tbl.dbus, &handle->wayland.dbus);
|
MwLLDBusFreeContext(&wl_call_tbl.dbus, &handle->wayland.dbus);
|
||||||
|
|
@ -1099,9 +1060,7 @@ static void MwLLDestroyImpl(MwLL handle) {
|
||||||
printf("widget invalid\n");
|
printf("widget invalid\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
pthread_mutex_lock(&destroyedWidgetsTableMutex);
|
pthread_mutex_destroy(&handle->wayland.eventsMutex);
|
||||||
arrput(destroyedWidgetsTable, handle);
|
|
||||||
pthread_mutex_unlock(&destroyedWidgetsTableMutex);
|
|
||||||
|
|
||||||
free(handle);
|
free(handle);
|
||||||
}
|
}
|
||||||
|
|
@ -1121,7 +1080,7 @@ static void MwLLGetXYWHImpl(MwLL handle, int* x, int* y, unsigned int* w, unsign
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MwLLSetXYImpl(MwLL handle, int x, int y) {
|
static void MwLLSetXYImpl(MwLL handle, int x, int y) {
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
MwLLWaylandRegionInvalidate(handle);
|
MwLLWaylandRegionInvalidate(handle);
|
||||||
|
|
||||||
if(handle->wayland.type != MwLL_WAYLAND_TOPLEVEL) {
|
if(handle->wayland.type != MwLL_WAYLAND_TOPLEVEL) {
|
||||||
|
|
@ -1186,7 +1145,6 @@ static void actually_set_wh(MwLL handle) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MwLLSetWHImpl(MwLL handle, int w, int h) {
|
static void MwLLSetWHImpl(MwLL handle, int w, int h) {
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
|
|
||||||
if(handle->wayland.ww == w && handle->wayland.wh == h) {
|
if(handle->wayland.ww == w && handle->wayland.wh == h) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -1224,7 +1182,6 @@ const float_color one = {.2627451, .37254902, .49411765};
|
||||||
const float_color two = {.05490196, .17254902, .30588235};
|
const float_color two = {.05490196, .17254902, .30588235};
|
||||||
|
|
||||||
static void MwLLBeginDrawImpl(MwLL handle) {
|
static void MwLLBeginDrawImpl(MwLL handle) {
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
cairo_save(handle->wayland.cairo.front_cairo_back);
|
cairo_save(handle->wayland.cairo.front_cairo_back);
|
||||||
cairo_set_source_rgba(handle->wayland.cairo.front_cairo_back, 0, 0, 0, 0);
|
cairo_set_source_rgba(handle->wayland.cairo.front_cairo_back, 0, 0, 0, 0);
|
||||||
cairo_set_operator(handle->wayland.cairo.front_cairo_back, CAIRO_OPERATOR_SOURCE);
|
cairo_set_operator(handle->wayland.cairo.front_cairo_back, CAIRO_OPERATOR_SOURCE);
|
||||||
|
|
@ -1384,7 +1341,6 @@ static void MwLLEndDrawImpl(MwLL handle) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MwLLPolygonImpl(MwLL handle, MwPoint* points, int points_count, MwLLColor color) {
|
static void MwLLPolygonImpl(MwLL handle, MwPoint* points, int points_count, MwLLColor color) {
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
|
|
||||||
clip(handle);
|
clip(handle);
|
||||||
|
|
||||||
|
|
@ -1395,7 +1351,6 @@ static void MwLLPolygonImpl(MwLL handle, MwPoint* points, int points_count, MwLL
|
||||||
|
|
||||||
static void MwLLLineImpl(MwLL handle, MwPoint* points, MwLLColor color) {
|
static void MwLLLineImpl(MwLL handle, MwPoint* points, MwLLColor color) {
|
||||||
int i;
|
int i;
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
|
|
||||||
clip(handle);
|
clip(handle);
|
||||||
|
|
||||||
|
|
@ -1437,10 +1392,6 @@ static int MwLLPendingImpl(MwLL handle) {
|
||||||
};
|
};
|
||||||
int pending = 0;
|
int pending = 0;
|
||||||
|
|
||||||
if(MwLLWaylandWidgetIsDestroyed(handle) || !handle->wayland.valid) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
handle->wayland.resizing = 0;
|
handle->wayland.resizing = 0;
|
||||||
|
|
||||||
if(handle->wayland.setting_wh) {
|
if(handle->wayland.setting_wh) {
|
||||||
|
|
@ -1512,7 +1463,6 @@ static int MwLLPendingImpl(MwLL handle) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MwLLNextEventImpl(MwLL handle) {
|
static void MwLLNextEventImpl(MwLL handle) {
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
|
|
||||||
if(!MwWaylandVulkan) {
|
if(!MwWaylandVulkan) {
|
||||||
if(handle->wayland.did_event_loop_early) {
|
if(handle->wayland.did_event_loop_early) {
|
||||||
|
|
@ -1533,7 +1483,7 @@ static void MwLLNextEventImpl(MwLL handle) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MwLLSetTitleImpl(MwLL handle, const char* title) {
|
static void MwLLSetTitleImpl(MwLL handle, const char* title) {
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
if(handle->wayland.type == MwLL_WAYLAND_TOPLEVEL) {
|
if(handle->wayland.type == MwLL_WAYLAND_TOPLEVEL) {
|
||||||
xdg_toplevel_set_title(handle->wayland.toplevel->xdg_top_level, title);
|
xdg_toplevel_set_title(handle->wayland.toplevel->xdg_top_level, title);
|
||||||
}
|
}
|
||||||
|
|
@ -1559,7 +1509,6 @@ static void MwLLDestroyPixmapImpl(MwLLPixmap pixmap) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MwLLDrawPixmapImpl(MwLL handle, MwRect* rect, MwLLPixmap pixmap) {
|
static void MwLLDrawPixmapImpl(MwLL handle, MwRect* rect, MwLLPixmap pixmap) {
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
|
|
||||||
clip(handle);
|
clip(handle);
|
||||||
|
|
||||||
|
|
@ -1569,7 +1518,7 @@ static void MwLLDrawPixmapImpl(MwLL handle, MwRect* rect, MwLLPixmap pixmap) {
|
||||||
wl_surface_damage(handle->wayland.framebuffer.surface, 0, 0, handle->wayland.ww, handle->wayland.wh);
|
wl_surface_damage(handle->wayland.framebuffer.surface, 0, 0, handle->wayland.ww, handle->wayland.wh);
|
||||||
}
|
}
|
||||||
static void MwLLSetIconImpl(MwLL handle, MwLLPixmap pixmap) {
|
static void MwLLSetIconImpl(MwLL handle, MwLLPixmap pixmap) {
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
if(handle->wayland.type == MwLL_WAYLAND_TOPLEVEL) {
|
if(handle->wayland.type == MwLL_WAYLAND_TOPLEVEL) {
|
||||||
if(WAYLAND_GET_INTERFACE(handle->wayland, xdg_toplevel_icon_manager_v1) != NULL) {
|
if(WAYLAND_GET_INTERFACE(handle->wayland, xdg_toplevel_icon_manager_v1) != NULL) {
|
||||||
struct xdg_toplevel_icon_manager_v1* icon_manager = WAYLAND_GET_INTERFACE(handle->wayland, xdg_toplevel_icon_manager_v1)->context;
|
struct xdg_toplevel_icon_manager_v1* icon_manager = WAYLAND_GET_INTERFACE(handle->wayland, xdg_toplevel_icon_manager_v1)->context;
|
||||||
|
|
@ -1623,7 +1572,11 @@ static void MwLLSetIconImpl(MwLL handle, MwLLPixmap pixmap) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MwLLForceRenderImpl(MwLL handle) {
|
static void MwLLForceRenderImpl(MwLL handle) {
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
|
if(!handle->wayland.configured) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
wl_surface_damage(handle->wayland.framebuffer.surface, 0, 0, handle->wayland.ww, handle->wayland.wh);
|
wl_surface_damage(handle->wayland.framebuffer.surface, 0, 0, handle->wayland.ww, handle->wayland.wh);
|
||||||
|
|
||||||
handle->wayland.force_render = MwTRUE;
|
handle->wayland.force_render = MwTRUE;
|
||||||
|
|
@ -1635,8 +1588,6 @@ static void MwLLForceRenderImpl(MwLL handle) {
|
||||||
static void MwLLSetCursorImpl(MwLL handle, MwCursor* image, MwCursor* mask) {
|
static void MwLLSetCursorImpl(MwLL handle, MwCursor* image, MwCursor* mask) {
|
||||||
int x, y, xs, ys;
|
int x, y, xs, ys;
|
||||||
|
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
|
|
||||||
if(handle->wayland.cursor.setup) {
|
if(handle->wayland.cursor.setup) {
|
||||||
MwLLWaylandBufferDestroy(&handle->wayland.cursor);
|
MwLLWaylandBufferDestroy(&handle->wayland.cursor);
|
||||||
wl_surface_destroy(handle->wayland.cursor.surface);
|
wl_surface_destroy(handle->wayland.cursor.surface);
|
||||||
|
|
@ -1687,7 +1638,7 @@ static void MwLLSetCursorImpl(MwLL handle, MwCursor* image, MwCursor* mask) {
|
||||||
static void MwLLDetachImpl(MwLL handle, MwPoint* point) {
|
static void MwLLDetachImpl(MwLL handle, MwPoint* point) {
|
||||||
MwLL p = handle->wayland.parent;
|
MwLL p = handle->wayland.parent;
|
||||||
int x = 0, y = 0;
|
int x = 0, y = 0;
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
while(p != NULL) {
|
while(p != NULL) {
|
||||||
if(p->wayland.type != MwLL_WAYLAND_TOPLEVEL) {
|
if(p->wayland.type != MwLL_WAYLAND_TOPLEVEL) {
|
||||||
x += p->wayland.x;
|
x += p->wayland.x;
|
||||||
|
|
@ -1709,7 +1660,7 @@ static void MwLLShowImpl(MwLL handle, int show) {
|
||||||
if(!handle->wayland.configured) {
|
if(!handle->wayland.configured) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
/* Some guy on a mailing list said that "abusing" wl_surface_attach for this purpose is bad? This is documented behavior so please I beg of you let me know if there's a compositor that actually has a problem with this. */
|
/* Some guy on a mailing list said that "abusing" wl_surface_attach for this purpose is bad? This is documented behavior so please I beg of you let me know if there's a compositor that actually has a problem with this. */
|
||||||
if(handle->wayland.framebuffer.surface) {
|
if(handle->wayland.framebuffer.surface) {
|
||||||
wl_surface_attach(handle->wayland.framebuffer.surface, show ? handle->wayland.framebuffer.shm_buffer : NULL, 0, 0);
|
wl_surface_attach(handle->wayland.framebuffer.surface, show ? handle->wayland.framebuffer.shm_buffer : NULL, 0, 0);
|
||||||
|
|
@ -1728,7 +1679,7 @@ static void MwLLMakePopupImpl(MwLL handle, MwLL parent) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MwLLSetSizeHintsImpl(MwLL handle, int minx, int miny, int maxx, int maxy) {
|
static void MwLLSetSizeHintsImpl(MwLL handle, int minx, int miny, int maxx, int maxy) {
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
if(handle->wayland.type == MwLL_WAYLAND_TOPLEVEL) {
|
if(handle->wayland.type == MwLL_WAYLAND_TOPLEVEL) {
|
||||||
xdg_toplevel_set_min_size(handle->wayland.toplevel->xdg_top_level, minx, miny);
|
xdg_toplevel_set_min_size(handle->wayland.toplevel->xdg_top_level, minx, miny);
|
||||||
xdg_toplevel_set_max_size(handle->wayland.toplevel->xdg_top_level, maxx, maxy);
|
xdg_toplevel_set_max_size(handle->wayland.toplevel->xdg_top_level, maxx, maxy);
|
||||||
|
|
@ -1739,7 +1690,7 @@ static void MwLLSetSizeHintsImpl(MwLL handle, int minx, int miny, int maxx, int
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MwLLMakeBorderlessImpl(MwLL handle, int toggle) {
|
static void MwLLMakeBorderlessImpl(MwLL handle, int toggle) {
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
if(handle->wayland.type == MwLL_WAYLAND_TOPLEVEL) {
|
if(handle->wayland.type == MwLL_WAYLAND_TOPLEVEL) {
|
||||||
if(WAYLAND_GET_INTERFACE(handle->wayland, zxdg_decoration_manager_v1) != NULL) {
|
if(WAYLAND_GET_INTERFACE(handle->wayland, zxdg_decoration_manager_v1) != NULL) {
|
||||||
zxdg_decoration_manager_v1_context_t* dec = WAYLAND_GET_INTERFACE(handle->wayland, zxdg_decoration_manager_v1)->context;
|
zxdg_decoration_manager_v1_context_t* dec = WAYLAND_GET_INTERFACE(handle->wayland, zxdg_decoration_manager_v1)->context;
|
||||||
|
|
@ -1766,7 +1717,7 @@ static void MwLLFocusImpl(MwLL handle) {
|
||||||
|
|
||||||
static void MwLLGrabPointerImpl(MwLL handle, int toggle) {
|
static void MwLLGrabPointerImpl(MwLL handle, int toggle) {
|
||||||
MwLL topmost_parent = handle;
|
MwLL topmost_parent = handle;
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
while(topmost_parent->wayland.parent) topmost_parent = topmost_parent->wayland.parent;
|
while(topmost_parent->wayland.parent) topmost_parent = topmost_parent->wayland.parent;
|
||||||
if(handle->wayland.pointer_constraints && handle->wayland.relative_pointer_manager) {
|
if(handle->wayland.pointer_constraints && handle->wayland.relative_pointer_manager) {
|
||||||
if(toggle) {
|
if(toggle) {
|
||||||
|
|
@ -1793,7 +1744,6 @@ static void MwLLGrabPointerImpl(MwLL handle, int toggle) {
|
||||||
|
|
||||||
static void MwLLSetClipboardImpl(MwLL handle, const char* text, int clipboard_type) {
|
static void MwLLSetClipboardImpl(MwLL handle, const char* text, int clipboard_type) {
|
||||||
int i;
|
int i;
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
|
|
||||||
if(handle->wayland.clipboard_buffer != NULL) {
|
if(handle->wayland.clipboard_buffer != NULL) {
|
||||||
free(handle->wayland.clipboard_buffer);
|
free(handle->wayland.clipboard_buffer);
|
||||||
|
|
@ -1820,7 +1770,7 @@ static void MwLLSetClipboardImpl(MwLL handle, const char* text, int clipboard_ty
|
||||||
|
|
||||||
static void MwLLGetClipboardImpl(MwLL handle, int clipboard_type) {
|
static void MwLLGetClipboardImpl(MwLL handle, int clipboard_type) {
|
||||||
int i;
|
int i;
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
if(clipboard_type == MwCLIPBOARD_PRIMARY) {
|
if(clipboard_type == MwCLIPBOARD_PRIMARY) {
|
||||||
if(handle->wayland.supports_zwp) {
|
if(handle->wayland.supports_zwp) {
|
||||||
for(i = 0; i < arrlen(handle->wayland.clipboard_devices_zwp); i++) {
|
for(i = 0; i < arrlen(handle->wayland.clipboard_devices_zwp); i++) {
|
||||||
|
|
@ -1842,8 +1792,6 @@ static void MwLLGetClipboardImpl(MwLL handle, int clipboard_type) {
|
||||||
static void MwLLMakeToolWindowImpl(MwLL handle) {
|
static void MwLLMakeToolWindowImpl(MwLL handle) {
|
||||||
MwBool can_do_layer_surface = MwFALSE;
|
MwBool can_do_layer_surface = MwFALSE;
|
||||||
|
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
|
|
||||||
can_do_layer_surface = (WAYLAND_GET_INTERFACE(handle->wayland, zwlr_layer_shell_v1) != NULL);
|
can_do_layer_surface = (WAYLAND_GET_INTERFACE(handle->wayland, zwlr_layer_shell_v1) != NULL);
|
||||||
|
|
||||||
if(!handle->wayland.parent && can_do_layer_surface) {
|
if(!handle->wayland.parent && can_do_layer_surface) {
|
||||||
|
|
@ -1858,14 +1806,12 @@ static void MwLLMakeToolWindowImpl(MwLL handle) {
|
||||||
static void MwLLGetCursorCoordImpl(MwLL handle, MwPoint* point) {
|
static void MwLLGetCursorCoordImpl(MwLL handle, MwPoint* point) {
|
||||||
MwLL topmost_parent = handle;
|
MwLL topmost_parent = handle;
|
||||||
|
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
while(topmost_parent->wayland.parent) topmost_parent = topmost_parent->wayland.parent;
|
while(topmost_parent->wayland.parent) topmost_parent = topmost_parent->wayland.parent;
|
||||||
|
|
||||||
*point = topmost_parent->wayland.cur_mouse_pos;
|
*point = topmost_parent->wayland.cur_mouse_pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MwLLGetScreenSizeImpl(MwLL handle, MwRect* rect) {
|
static void MwLLGetScreenSizeImpl(MwLL handle, MwRect* rect) {
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
|
|
||||||
rect->x = 0;
|
rect->x = 0;
|
||||||
rect->y = 0;
|
rect->y = 0;
|
||||||
|
|
@ -1885,7 +1831,6 @@ static void MwLLBeginStateChangeImpl(MwLL handle) {
|
||||||
static void MwLLEndStateChangeImpl(MwLL handle) {
|
static void MwLLEndStateChangeImpl(MwLL handle) {
|
||||||
MwLL topmost_parent;
|
MwLL topmost_parent;
|
||||||
int x, y;
|
int x, y;
|
||||||
WIDGET_CHECK(handle);
|
|
||||||
|
|
||||||
if(!handle->wayland.changing) {
|
if(!handle->wayland.changing) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -1945,7 +1890,7 @@ static MwBool MwLLDoModernImpl(MwLL handle) {
|
||||||
|
|
||||||
static void MwLLRaiseImpl(MwLL handle) {
|
static void MwLLRaiseImpl(MwLL handle) {
|
||||||
(void)handle;
|
(void)handle;
|
||||||
/* WIDGET_CHECK(handle);
|
/*
|
||||||
|
|
||||||
if(handle->wayland.type == MwLL_WAYLAND_SUBLEVEL) {
|
if(handle->wayland.type == MwLL_WAYLAND_SUBLEVEL) {
|
||||||
MwLL topmost_parent = handle;
|
MwLL topmost_parent = handle;
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
#ifdef USE_COCOA
|
#ifdef USE_COCOA
|
||||||
#define PERIODIC
|
#define PERIODIC
|
||||||
#endif
|
#endif
|
||||||
|
// #define USE_CLASSIC_THEME
|
||||||
#define RESIZE_ON_TICK
|
#define RESIZE_ON_TICK
|
||||||
|
|
||||||
#define DRAW(handle) \
|
#define DRAW(handle) \
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,38 @@
|
||||||
#include <Mw/Milsko.h>
|
#include <Mw/Milsko.h>
|
||||||
|
|
||||||
|
#define USE_CATPPUCCIN_DARK
|
||||||
|
|
||||||
|
#ifdef USE_CATPPUCCIN_LIGHT
|
||||||
|
const char* MwDefaultBackground = "#eff1f5";
|
||||||
|
const char* MwDefaultForeground = "#4c4f69";
|
||||||
|
const char* MwDefaultSubBackground = "#9ca0b0";
|
||||||
|
const char* MwDefaultSubForeground = "#6c6f85";
|
||||||
|
const char* MwDefaultTitleBackground = "#bcc0cc";
|
||||||
|
const char* MwDefaultTitleForeground = "#5c5f77";
|
||||||
|
#else
|
||||||
const char* MwDefaultBackground = "#d2d2d2";
|
const char* MwDefaultBackground = "#d2d2d2";
|
||||||
const char* MwDefaultForeground = "#000";
|
const char* MwDefaultForeground = "#000";
|
||||||
const char* MwDefaultSubBackground = "#fff";
|
const char* MwDefaultSubBackground = "#fff";
|
||||||
const char* MwDefaultSubForeground = "#000";
|
const char* MwDefaultSubForeground = "#000";
|
||||||
const char* MwDefaultTitleBackground = "#008";
|
const char* MwDefaultTitleBackground = "#008";
|
||||||
const char* MwDefaultTitleForeground = "#fff";
|
const char* MwDefaultTitleForeground = "#fff";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_CATPPUCCIN_DARK
|
||||||
|
const char* MwDefaultDarkBackground = "#1e1e2e";
|
||||||
|
const char* MwDefaultDarkForeground = "#cdd6f4";
|
||||||
|
const char* MwDefaultDarkSubBackground = "#313244";
|
||||||
|
const char* MwDefaultDarkSubForeground = "#a6adc8";
|
||||||
|
const char* MwDefaultDarkTitleBackground = "#45475a";
|
||||||
|
const char* MwDefaultDarkTitleForeground = "#bac2de";
|
||||||
|
#else
|
||||||
const char* MwDefaultDarkBackground = "#333";
|
const char* MwDefaultDarkBackground = "#333";
|
||||||
const char* MwDefaultDarkForeground = "#ddd";
|
const char* MwDefaultDarkForeground = "#ddd";
|
||||||
const char* MwDefaultDarkSubBackground = "#333";
|
const char* MwDefaultDarkSubBackground = "#333";
|
||||||
const char* MwDefaultDarkSubForeground = "#ddd";
|
const char* MwDefaultDarkSubForeground = "#ddd";
|
||||||
const char* MwDefaultDarkTitleBackground = "#008";
|
const char* MwDefaultDarkTitleBackground = "#008";
|
||||||
const char* MwDefaultDarkTitleForeground = "#fff";
|
const char* MwDefaultDarkTitleForeground = "#fff";
|
||||||
|
#endif
|
||||||
|
|
||||||
const int MwDefaultShadow = -32;
|
const int MwDefaultShadow = -32;
|
||||||
|
|
||||||
|
|
|
||||||
75
src/draw.c
75
src/draw.c
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
#include "../external/stb_ds.h"
|
#include "../external/stb_ds.h"
|
||||||
|
|
||||||
static int get_color_diff(MwWidget handle) {
|
int MwGetColorDifference(MwWidget handle) {
|
||||||
if(MwGetInteger(handle, MwNmodernLook)) {
|
if(MwGetInteger(handle, MwNmodernLook)) {
|
||||||
return 40;
|
return 40;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -99,29 +99,70 @@ MwLLColor MwLightenColor(MwWidget handle, MwLLColor color, int r, int g, int b)
|
||||||
return MwLLAllocColor(handle->lowlevel, cr, cg, cb);
|
return MwLLAllocColor(handle->lowlevel, cr, cg, cb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MwFixRect(MwRect* rect) {
|
||||||
|
if(rect->width < 0) {
|
||||||
|
rect->width *= -1;
|
||||||
|
rect->x -= rect->width;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(rect->height < 0) {
|
||||||
|
rect->height *= -1;
|
||||||
|
rect->y -= rect->height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MwDrawRect(MwWidget handle, MwRect* rect, MwLLColor color) {
|
void MwDrawRect(MwWidget handle, MwRect* rect, MwLLColor color) {
|
||||||
MwPoint p[4];
|
MwPoint p[4];
|
||||||
|
MwRect r = *rect;
|
||||||
|
|
||||||
p[0].x = rect->x;
|
MwFixRect(&r);
|
||||||
p[0].y = rect->y;
|
|
||||||
|
|
||||||
p[1].x = rect->x + rect->width;
|
p[0].x = r.x;
|
||||||
p[1].y = rect->y;
|
p[0].y = r.y;
|
||||||
|
|
||||||
p[2].x = rect->x + rect->width;
|
p[1].x = r.x + r.width;
|
||||||
p[2].y = rect->y + rect->height;
|
p[1].y = r.y;
|
||||||
|
|
||||||
p[3].x = rect->x;
|
p[2].x = r.x + r.width;
|
||||||
p[3].y = rect->y + rect->height;
|
p[2].y = r.y + r.height;
|
||||||
|
|
||||||
|
p[3].x = r.x;
|
||||||
|
p[3].y = r.y + r.height;
|
||||||
|
|
||||||
MwLLPolygon(handle->lowlevel, p, 4, color);
|
MwLLPolygon(handle->lowlevel, p, 4, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MwDrawRectLine(MwWidget handle, MwRect* rect, MwLLColor color) {
|
||||||
|
MwPoint p[5];
|
||||||
|
MwRect r = *rect;
|
||||||
|
|
||||||
|
MwFixRect(&r);
|
||||||
|
|
||||||
|
p[0].x = r.x;
|
||||||
|
p[0].y = r.y;
|
||||||
|
|
||||||
|
p[1].x = r.x + r.width;
|
||||||
|
p[1].y = r.y;
|
||||||
|
|
||||||
|
p[2].x = r.x + r.width;
|
||||||
|
p[2].y = r.y + r.height;
|
||||||
|
|
||||||
|
p[3].x = r.x;
|
||||||
|
p[3].y = r.y + r.height;
|
||||||
|
|
||||||
|
p[4] = p[0];
|
||||||
|
|
||||||
|
MwLLLine(handle->lowlevel, &p[0], color);
|
||||||
|
MwLLLine(handle->lowlevel, &p[1], color);
|
||||||
|
MwLLLine(handle->lowlevel, &p[2], color);
|
||||||
|
MwLLLine(handle->lowlevel, &p[3], color);
|
||||||
|
}
|
||||||
|
|
||||||
void MwDrawRectFading(MwWidget handle, MwRect* rect, MwLLColor color) {
|
void MwDrawRectFading(MwWidget handle, MwRect* rect, MwLLColor color) {
|
||||||
MwLLPixmap pixmap;
|
MwLLPixmap pixmap;
|
||||||
int y;
|
int y;
|
||||||
double darken = 0.;
|
double darken = 0.;
|
||||||
int ColorDiff = get_color_diff(handle);
|
int ColorDiff = MwGetColorDifference(handle);
|
||||||
double darkenStep = (ColorDiff / 2.) / rect->height;
|
double darkenStep = (ColorDiff / 2.) / rect->height;
|
||||||
unsigned long sz = 1 * rect->height * 4;
|
unsigned long sz = 1 * rect->height * 4;
|
||||||
unsigned char* data = malloc(sz * 2);
|
unsigned char* data = malloc(sz * 2);
|
||||||
|
|
@ -178,7 +219,7 @@ void MwDrawFrameWithBorder(MwWidget handle, MwRect* rect, MwLLColor color, int i
|
||||||
if(MwGetInteger(handle, MwNmodernLook)) {
|
if(MwGetInteger(handle, MwNmodernLook)) {
|
||||||
MwDrawFrameEx(handle, rect, color, invert, border, 0, 0);
|
MwDrawFrameEx(handle, rect, color, invert, border, 0, 0);
|
||||||
} else {
|
} else {
|
||||||
int diff = get_color_diff(handle) / 3 * 2;
|
int diff = MwGetColorDifference(handle) / 3 * 2;
|
||||||
|
|
||||||
if(border >= 2) {
|
if(border >= 2) {
|
||||||
int i;
|
int i;
|
||||||
|
|
@ -236,7 +277,7 @@ void MwDrawWidgetBack(MwWidget handle, MwRect* rect, MwLLColor color, int invert
|
||||||
void MwDrawDiamond(MwWidget handle, MwRect* rect, MwLLColor color, int invert) {
|
void MwDrawDiamond(MwWidget handle, MwRect* rect, MwLLColor color, int invert) {
|
||||||
MwPoint p[6];
|
MwPoint p[6];
|
||||||
int border = MwDefaultBorderWidth(handle);
|
int border = MwDefaultBorderWidth(handle);
|
||||||
int ColorDiff = get_color_diff(handle) + (MwGetInteger(handle, MwNmodernLook) ? 48 : 0);
|
int ColorDiff = MwGetColorDifference(handle) + (MwGetInteger(handle, MwNmodernLook) ? 48 : 0);
|
||||||
MwLLColor darker = MwLightenColor(handle, color, -ColorDiff, -ColorDiff, -ColorDiff);
|
MwLLColor darker = MwLightenColor(handle, color, -ColorDiff, -ColorDiff, -ColorDiff);
|
||||||
MwLLColor lighter = MwLightenColor(handle, color, ColorDiff, ColorDiff, ColorDiff);
|
MwLLColor lighter = MwLightenColor(handle, color, ColorDiff, ColorDiff, ColorDiff);
|
||||||
MwLLColor col = invert ? MwLightenColor(handle, color, -8, -8, -8) : MwLightenColor(handle, color, 0, 0, 0);
|
MwLLColor col = invert ? MwLightenColor(handle, color, -8, -8, -8) : MwLightenColor(handle, color, 0, 0, 0);
|
||||||
|
|
@ -312,7 +353,7 @@ void MwDrawCircle(MwWidget handle, MwRect* rect, MwLLColor color, MwLLColor back
|
||||||
double cx, cy, rx, ry;
|
double cx, cy, rx, ry;
|
||||||
int border;
|
int border;
|
||||||
int x, y;
|
int x, y;
|
||||||
int ColorDiff = (get_color_diff(handle));
|
int ColorDiff = (MwGetColorDifference(handle));
|
||||||
MwLLColor darker = MwLightenColor(handle, color, -ColorDiff, -ColorDiff, -ColorDiff);
|
MwLLColor darker = MwLightenColor(handle, color, -ColorDiff, -ColorDiff, -ColorDiff);
|
||||||
MwLLColor lighter = MwLightenColor(handle, color, ColorDiff, ColorDiff, ColorDiff);
|
MwLLColor lighter = MwLightenColor(handle, color, ColorDiff, ColorDiff, ColorDiff);
|
||||||
MwLLColor base = MwLightenColor(handle, color, 0, 0, 0);
|
MwLLColor base = MwLightenColor(handle, color, 0, 0, 0);
|
||||||
|
|
@ -385,6 +426,8 @@ void MwDrawCircle(MwWidget handle, MwRect* rect, MwLLColor color, MwLLColor back
|
||||||
pout[2] = (MwU8)mixColor->common.blue;
|
pout[2] = (MwU8)mixColor->common.blue;
|
||||||
|
|
||||||
pout[3] = 255;
|
pout[3] = 255;
|
||||||
|
|
||||||
|
MwLLFreeColor(mixColor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -402,7 +445,7 @@ void MwDrawCircle(MwWidget handle, MwRect* rect, MwLLColor color, MwLLColor back
|
||||||
|
|
||||||
static void MwDrawFrameEx_simple(MwWidget handle, MwRect* rect, MwLLColor color, int invert, int border, int diff, int same) {
|
static void MwDrawFrameEx_simple(MwWidget handle, MwRect* rect, MwLLColor color, int invert, int border, int diff, int same) {
|
||||||
MwPoint p[7];
|
MwPoint p[7];
|
||||||
int ColorDiff = get_color_diff(handle);
|
int ColorDiff = MwGetColorDifference(handle);
|
||||||
MwLLColor darker = MwLightenColor(handle, color, -ColorDiff * 3 / 2 + diff, -ColorDiff * 3 / 2 + diff, -ColorDiff * 3 / 2 + diff);
|
MwLLColor darker = MwLightenColor(handle, color, -ColorDiff * 3 / 2 + diff, -ColorDiff * 3 / 2 + diff, -ColorDiff * 3 / 2 + diff);
|
||||||
MwLLColor lighter = same ? MwLightenColor(handle, darker, 0, 0, 0) : MwLightenColor(handle, color, ColorDiff - diff, ColorDiff - diff, ColorDiff - diff);
|
MwLLColor lighter = same ? MwLightenColor(handle, darker, 0, 0, 0) : MwLightenColor(handle, color, ColorDiff - diff, ColorDiff - diff, ColorDiff - diff);
|
||||||
color_set_disabled_if_disabled(handle, darker);
|
color_set_disabled_if_disabled(handle, darker);
|
||||||
|
|
@ -499,7 +542,7 @@ static void frame_border_complex(MwWidget handle, MwRect* rect, MwLLColor lighte
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MwDrawFrameEx_complex(MwWidget handle, MwRect* rect, MwLLColor color, int invert, int border, int diff, int same) {
|
static void MwDrawFrameEx_complex(MwWidget handle, MwRect* rect, MwLLColor color, int invert, int border, int diff, int same) {
|
||||||
int ColorDiff = get_color_diff(handle);
|
int ColorDiff = MwGetColorDifference(handle);
|
||||||
MwLLColor darker = MwLightenColor(handle, color, -ColorDiff * 3 / 2 + diff, -ColorDiff * 3 / 2 + diff, -ColorDiff * 3 / 2 + diff);
|
MwLLColor darker = MwLightenColor(handle, color, -ColorDiff * 3 / 2 + diff, -ColorDiff * 3 / 2 + diff, -ColorDiff * 3 / 2 + diff);
|
||||||
MwLLColor lighter = same ? MwLightenColor(handle, darker, 0, 0, 0) : MwLightenColor(handle, color, (ColorDiff / 2) - diff, (ColorDiff / 2) - diff, (ColorDiff / 2) - diff);
|
MwLLColor lighter = same ? MwLightenColor(handle, darker, 0, 0, 0) : MwLightenColor(handle, color, (ColorDiff / 2) - diff, (ColorDiff / 2) - diff, (ColorDiff / 2) - diff);
|
||||||
MwRect r = *rect;
|
MwRect r = *rect;
|
||||||
|
|
@ -539,7 +582,7 @@ void MwDrawFrameEx(MwWidget handle, MwRect* rect, MwLLColor color, int invert, i
|
||||||
void MwDrawTriangle(MwWidget handle, MwRect* rect, MwLLColor color, int invert, int direction) {
|
void MwDrawTriangle(MwWidget handle, MwRect* rect, MwLLColor color, int invert, int direction) {
|
||||||
MwPoint p1[4], p2[4], p3[4], p4[3];
|
MwPoint p1[4], p2[4], p3[4], p4[3];
|
||||||
const int border = MwGetInteger(handle, MwNmodernLook) ? 2 : MwDefaultBorderWidth(handle);
|
const int border = MwGetInteger(handle, MwNmodernLook) ? 2 : MwDefaultBorderWidth(handle);
|
||||||
int ColorDiff = get_color_diff(handle);
|
int ColorDiff = MwGetColorDifference(handle);
|
||||||
MwLLColor darker = MwLightenColor(handle, color, -ColorDiff, -ColorDiff, -ColorDiff);
|
MwLLColor darker = MwLightenColor(handle, color, -ColorDiff, -ColorDiff, -ColorDiff);
|
||||||
MwLLColor lighter = MwLightenColor(handle, color, ColorDiff, ColorDiff, ColorDiff);
|
MwLLColor lighter = MwLightenColor(handle, color, ColorDiff, ColorDiff, ColorDiff);
|
||||||
MwLLColor col = invert ? MwLightenColor(handle, color, -8, -8, -8) : MwLightenColor(handle, color, 0, 0, 0);
|
MwLLColor col = invert ? MwLightenColor(handle, color, -8, -8, -8) : MwLightenColor(handle, color, 0, 0, 0);
|
||||||
|
|
|
||||||
|
|
@ -5,260 +5,260 @@
|
||||||
* "Public domain font. Share and enjoy."
|
* "Public domain font. Share and enjoy."
|
||||||
*/
|
*/
|
||||||
MwFont MwBoldFontData[] = {
|
MwFont MwBoldFontData[] = {
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 0 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 0 */
|
||||||
{0, 12, {0, 0, 12, 12, 30, 30, 63, 63, 30, 30, 12, 12, 0, 0}}, /* 1 */
|
{0, 11, {0, 0, 0, 0, 0, 24, 60, 126, 60, 24, 0, 0, 0}}, /* 1 */
|
||||||
{0, 12, {59, 119, 110, 93, 59, 119, 110, 93, 59, 119, 110, 93, 59, 119}}, /* 2 */
|
{0, 11, {0, 102, 24, 102, 24, 102, 24, 102, 24, 102, 24, 102, 0}}, /* 2 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 3 */
|
{0, 11, {0, 108, 108, 124, 108, 108, 0, 30, 12, 12, 12, 12, 0}}, /* 3 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 4 */
|
{0, 11, {0, 120, 96, 112, 96, 96, 0, 30, 24, 28, 24, 24, 0}}, /* 4 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 5 */
|
{0, 11, {0, 56, 96, 96, 96, 56, 0, 28, 26, 28, 26, 26, 0}}, /* 5 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 6 */
|
{0, 11, {0, 96, 96, 96, 96, 120, 0, 30, 24, 28, 24, 24, 0}}, /* 6 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 7 */
|
{0, 11, {0, 0, 60, 102, 102, 60, 0, 0, 0, 0, 0, 0, 0}}, /* 7 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 8 */
|
{0, 11, {0, 0, 24, 24, 126, 126, 24, 24, 0, 126, 126, 0, 0}}, /* 8 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 9 */
|
{0, 11, {0, 102, 118, 126, 110, 102, 0, 24, 24, 24, 24, 30, 0}}, /* 9 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 10 */
|
{0, 11, {0, 102, 102, 36, 60, 24, 0, 30, 12, 12, 12, 12, 0}}, /* 10 */
|
||||||
{0, 12, {12, 12, 12, 12, 12, 12, 124, 124, 0, 0, 0, 0, 0, 0}}, /* 11 */
|
{0, 11, {24, 24, 24, 24, 24, 24, 120, 120, 0, 0, 0, 0, 0}}, /* 11 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 124, 124, 12, 12, 12, 12, 12, 12}}, /* 12 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 120, 120, 24, 24, 24, 24, 24}}, /* 12 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 15, 15, 12, 12, 12, 12, 12, 12}}, /* 13 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 31, 31, 24, 24, 24, 24, 24}}, /* 13 */
|
||||||
{0, 12, {12, 12, 12, 12, 12, 12, 15, 15, 0, 0, 0, 0, 0, 0}}, /* 14 */
|
{0, 11, {24, 24, 24, 24, 24, 24, 31, 31, 0, 0, 0, 0, 0}}, /* 14 */
|
||||||
{0, 12, {12, 12, 12, 12, 12, 12, 127, 127, 12, 12, 12, 12, 12, 12}}, /* 15 */
|
{0, 11, {24, 24, 24, 24, 24, 24, 127, 127, 24, 24, 24, 24, 24}}, /* 15 */
|
||||||
{0, 12, {127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 16 */
|
{0, 11, {0, 0, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 16 */
|
||||||
{0, 12, {0, 0, 0, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 17 */
|
{0, 11, {0, 0, 0, 0, 127, 127, 0, 0, 0, 0, 0, 0, 0}}, /* 17 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 127, 127, 0, 0, 0, 0, 0, 0}}, /* 18 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 127, 127, 0, 0, 0, 0, 0}}, /* 18 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 0, 0, 0}}, /* 19 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 0, 0, 0}}, /* 19 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127}}, /* 20 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 0}}, /* 20 */
|
||||||
{0, 12, {12, 12, 12, 12, 12, 12, 15, 15, 12, 12, 12, 12, 12, 12}}, /* 21 */
|
{0, 11, {24, 24, 24, 24, 24, 24, 31, 31, 24, 24, 24, 24, 24}}, /* 21 */
|
||||||
{0, 12, {12, 12, 12, 12, 12, 12, 124, 124, 12, 12, 12, 12, 12, 12}}, /* 22 */
|
{0, 11, {24, 24, 24, 24, 24, 24, 120, 120, 24, 24, 24, 24, 24}}, /* 22 */
|
||||||
{0, 12, {12, 12, 12, 12, 12, 12, 127, 127, 0, 0, 0, 0, 0, 0}}, /* 23 */
|
{0, 11, {24, 24, 24, 24, 24, 24, 127, 127, 0, 0, 0, 0, 0}}, /* 23 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 127, 127, 12, 12, 12, 12, 12, 12}}, /* 24 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 127, 127, 24, 24, 24, 24, 24}}, /* 24 */
|
||||||
{0, 12, {12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}}, /* 25 */
|
{0, 11, {24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24}}, /* 25 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 26 */
|
{0, 11, {0, 0, 6, 12, 48, 96, 48, 12, 6, 126, 126, 0, 0}}, /* 26 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 27 */
|
{0, 11, {0, 0, 96, 48, 12, 6, 12, 48, 96, 126, 126, 0, 0}}, /* 27 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 28 */
|
{0, 11, {0, 0, 0, 0, 0, 126, 54, 54, 54, 118, 102, 0, 0}}, /* 28 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 29 */
|
{0, 11, {0, 0, 2, 6, 126, 126, 24, 126, 126, 96, 64, 0, 0}}, /* 29 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 30 */
|
{0, 11, {0, 0, 28, 54, 48, 48, 124, 48, 48, 54, 92, 0, 0}}, /* 30 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 31 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 24, 24, 0, 0, 0, 0, 0}}, /* 31 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 32 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 32 */
|
||||||
{0, 12, {0, 0, 12, 12, 12, 12, 12, 12, 12, 0, 12, 12, 0, 0}}, /* 33 */
|
{0, 11, {0, 0, 24, 24, 24, 24, 24, 24, 0, 24, 24, 0, 0}}, /* 33 */
|
||||||
{0, 12, {63, 27, 27, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 34 */
|
{0, 11, {0, 0, 54, 54, 54, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 34 */
|
||||||
{0, 12, {0, 0, 15, 15, 15, 63, 30, 30, 63, 60, 60, 60, 0, 0}}, /* 35 */
|
{0, 11, {0, 0, 20, 20, 62, 62, 20, 62, 62, 20, 20, 0, 0}}, /* 35 */
|
||||||
{0, 12, {0, 0, 12, 30, 45, 45, 28, 14, 13, 45, 45, 30, 12, 0}}, /* 36 */
|
{0, 11, {0, 0, 24, 60, 90, 88, 60, 26, 90, 60, 24, 0, 0}}, /* 36 */
|
||||||
{0, 12, {0, 0, 27, 55, 54, 28, 4, 8, 14, 27, 59, 54, 0, 0}}, /* 37 */
|
{0, 11, {0, 0, 114, 86, 116, 12, 24, 48, 46, 106, 78, 0, 0}}, /* 37 */
|
||||||
{0, 12, {0, 0, 14, 27, 27, 27, 14, 27, 55, 54, 54, 27, 0, 0}}, /* 38 */
|
{0, 11, {0, 0, 56, 108, 108, 108, 56, 106, 110, 108, 58, 0, 0}}, /* 38 */
|
||||||
{0, 12, {28, 12, 12, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 39 */
|
{0, 11, {0, 0, 28, 28, 24, 48, 0, 0, 0, 0, 0, 0, 0}}, /* 39 */
|
||||||
{0, 12, {0, 3, 6, 12, 12, 24, 24, 24, 24, 24, 12, 12, 6, 3}}, /* 40 */
|
{0, 11, {0, 0, 12, 24, 24, 48, 48, 48, 24, 24, 12, 0, 0}}, /* 40 */
|
||||||
{0, 12, {0, 48, 24, 12, 12, 6, 6, 6, 6, 6, 12, 12, 24, 48}}, /* 41 */
|
{0, 11, {0, 0, 48, 24, 24, 12, 12, 12, 24, 24, 48, 0, 0}}, /* 41 */
|
||||||
{0, 12, {0, 0, 0, 45, 45, 30, 12, 12, 30, 45, 45, 0, 0, 0}}, /* 42 */
|
{0, 11, {0, 0, 0, 0, 36, 24, 126, 126, 24, 36, 0, 0, 0}}, /* 42 */
|
||||||
{0, 12, {0, 0, 0, 0, 12, 12, 12, 63, 12, 12, 12, 0, 0, 0}}, /* 43 */
|
{0, 11, {0, 0, 0, 0, 24, 24, 126, 126, 24, 24, 0, 0, 0}}, /* 43 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 12, 12, 24}}, /* 44 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 0, 0, 28, 28, 24, 48, 0}}, /* 44 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0}}, /* 45 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 126, 126, 0, 0, 0, 0, 0}}, /* 45 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0}}, /* 46 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 60, 24, 0}}, /* 46 */
|
||||||
{0, 12, {0, 3, 3, 3, 6, 6, 12, 12, 12, 24, 24, 48, 48, 48}}, /* 47 */
|
{0, 11, {0, 0, 6, 6, 12, 12, 24, 48, 48, 96, 96, 0, 0}}, /* 47 */
|
||||||
{0, 12, {0, 0, 30, 51, 51, 51, 51, 51, 51, 51, 51, 30, 0, 0}}, /* 48 */
|
{0, 11, {0, 0, 24, 36, 102, 102, 102, 102, 102, 36, 24, 0, 0}}, /* 48 */
|
||||||
{0, 12, {0, 0, 12, 28, 60, 12, 12, 12, 12, 12, 12, 63, 0, 0}}, /* 49 */
|
{0, 11, {0, 0, 24, 56, 88, 24, 24, 24, 24, 24, 126, 0, 0}}, /* 49 */
|
||||||
{0, 12, {0, 0, 30, 51, 51, 3, 6, 6, 12, 24, 48, 63, 0, 0}}, /* 50 */
|
{0, 11, {0, 0, 60, 102, 102, 6, 28, 48, 96, 96, 126, 0, 0}}, /* 50 */
|
||||||
{0, 12, {0, 0, 30, 51, 51, 3, 14, 3, 3, 51, 51, 30, 0, 0}}, /* 51 */
|
{0, 11, {0, 0, 126, 6, 12, 24, 60, 6, 6, 102, 60, 0, 0}}, /* 51 */
|
||||||
{0, 12, {0, 0, 2, 6, 6, 14, 30, 22, 54, 63, 2, 2, 0, 0}}, /* 52 */
|
{0, 11, {0, 0, 6, 14, 30, 54, 102, 102, 126, 6, 6, 0, 0}}, /* 52 */
|
||||||
{0, 12, {0, 0, 63, 48, 48, 62, 51, 3, 3, 51, 51, 30, 0, 0}}, /* 53 */
|
{0, 11, {0, 0, 126, 96, 96, 124, 102, 6, 6, 102, 60, 0, 0}}, /* 53 */
|
||||||
{0, 12, {0, 0, 14, 27, 51, 48, 62, 51, 51, 51, 51, 30, 0, 0}}, /* 54 */
|
{0, 11, {0, 0, 60, 102, 96, 96, 124, 102, 102, 102, 60, 0, 0}}, /* 54 */
|
||||||
{0, 12, {0, 0, 63, 51, 54, 6, 12, 12, 12, 12, 12, 12, 0, 0}}, /* 55 */
|
{0, 11, {0, 0, 126, 6, 6, 12, 12, 24, 24, 48, 48, 0, 0}}, /* 55 */
|
||||||
{0, 12, {0, 0, 30, 51, 51, 30, 12, 30, 51, 51, 51, 30, 0, 0}}, /* 56 */
|
{0, 11, {0, 0, 60, 102, 102, 102, 60, 102, 102, 102, 60, 0, 0}}, /* 56 */
|
||||||
{0, 12, {0, 0, 30, 51, 51, 51, 51, 31, 3, 51, 54, 28, 0, 0}}, /* 57 */
|
{0, 11, {0, 0, 60, 102, 102, 102, 62, 6, 6, 102, 60, 0, 0}}, /* 57 */
|
||||||
{0, 12, {0, 0, 0, 0, 12, 12, 0, 0, 0, 12, 12, 0, 0, 0}}, /* 58 */
|
{0, 11, {0, 0, 0, 0, 24, 60, 24, 0, 0, 24, 60, 24, 0}}, /* 58 */
|
||||||
{0, 12, {0, 0, 0, 0, 12, 12, 0, 0, 0, 28, 12, 12, 24, 0}}, /* 59 */
|
{0, 11, {0, 0, 0, 0, 24, 60, 24, 0, 28, 28, 24, 48, 0}}, /* 59 */
|
||||||
{0, 12, {0, 0, 0, 3, 6, 12, 24, 48, 24, 12, 6, 3, 0, 0}}, /* 60 */
|
{0, 11, {0, 0, 6, 12, 24, 48, 96, 48, 24, 12, 6, 0, 0}}, /* 60 */
|
||||||
{0, 12, {0, 0, 0, 0, 63, 63, 0, 63, 63, 0, 0, 0, 0, 0}}, /* 61 */
|
{0, 11, {0, 0, 0, 0, 126, 126, 0, 126, 126, 0, 0, 0, 0}}, /* 61 */
|
||||||
{0, 12, {0, 0, 0, 48, 24, 12, 6, 3, 6, 12, 24, 48, 0, 0}}, /* 62 */
|
{0, 11, {0, 0, 96, 48, 24, 12, 6, 12, 24, 48, 96, 0, 0}}, /* 62 */
|
||||||
{0, 12, {0, 0, 30, 51, 51, 6, 12, 12, 12, 0, 12, 12, 0, 0}}, /* 63 */
|
{0, 11, {0, 0, 60, 102, 102, 6, 28, 24, 0, 24, 24, 0, 0}}, /* 63 */
|
||||||
{0, 12, {0, 0, 14, 27, 55, 61, 61, 61, 61, 55, 24, 15, 0, 0}}, /* 64 */
|
{0, 11, {0, 0, 60, 70, 70, 94, 86, 94, 64, 70, 60, 0, 0}}, /* 64 */
|
||||||
{0, 12, {0, 0, 30, 63, 51, 51, 51, 51, 63, 51, 51, 51, 0, 0}}, /* 65 */
|
{0, 11, {0, 0, 60, 102, 102, 102, 126, 102, 102, 102, 102, 0, 0}}, /* 65 */
|
||||||
{0, 12, {0, 0, 62, 51, 51, 50, 62, 51, 51, 51, 51, 62, 0, 0}}, /* 66 */
|
{0, 11, {0, 0, 124, 102, 102, 102, 124, 102, 102, 102, 124, 0, 0}}, /* 66 */
|
||||||
{0, 12, {0, 0, 30, 51, 51, 48, 48, 48, 48, 51, 51, 30, 0, 0}}, /* 67 */
|
{0, 11, {0, 0, 60, 102, 96, 96, 96, 96, 96, 102, 60, 0, 0}}, /* 67 */
|
||||||
{0, 12, {0, 0, 60, 54, 51, 51, 51, 51, 51, 51, 54, 60, 0, 0}}, /* 68 */
|
{0, 11, {0, 0, 124, 102, 102, 102, 102, 102, 102, 102, 124, 0, 0}}, /* 68 */
|
||||||
{0, 12, {0, 0, 63, 48, 48, 48, 62, 48, 48, 48, 48, 63, 0, 0}}, /* 69 */
|
{0, 11, {0, 0, 126, 96, 96, 96, 124, 96, 96, 96, 126, 0, 0}}, /* 69 */
|
||||||
{0, 12, {0, 0, 63, 48, 48, 48, 62, 48, 48, 48, 48, 48, 0, 0}}, /* 70 */
|
{0, 11, {0, 0, 126, 96, 96, 96, 124, 96, 96, 96, 96, 0, 0}}, /* 70 */
|
||||||
{0, 12, {0, 0, 30, 51, 51, 48, 48, 55, 51, 51, 51, 30, 0, 0}}, /* 71 */
|
{0, 11, {0, 0, 60, 102, 96, 96, 110, 102, 102, 102, 62, 0, 0}}, /* 71 */
|
||||||
{0, 12, {0, 0, 51, 51, 51, 51, 63, 51, 51, 51, 51, 51, 0, 0}}, /* 72 */
|
{0, 11, {0, 0, 102, 102, 102, 102, 126, 102, 102, 102, 102, 0, 0}}, /* 72 */
|
||||||
{0, 12, {0, 0, 63, 12, 12, 12, 12, 12, 12, 12, 12, 63, 0, 0}}, /* 73 */
|
{0, 11, {0, 0, 126, 24, 24, 24, 24, 24, 24, 24, 126, 0, 0}}, /* 73 */
|
||||||
{0, 12, {0, 0, 3, 3, 3, 3, 3, 3, 3, 51, 54, 28, 0, 0}}, /* 74 */
|
{0, 11, {0, 0, 6, 6, 6, 6, 6, 6, 6, 102, 60, 0, 0}}, /* 74 */
|
||||||
{0, 12, {0, 0, 51, 54, 60, 56, 56, 60, 60, 54, 51, 51, 0, 0}}, /* 75 */
|
{0, 11, {0, 0, 98, 102, 108, 120, 112, 120, 108, 102, 98, 0, 0}}, /* 75 */
|
||||||
{0, 12, {0, 0, 48, 48, 48, 48, 48, 48, 48, 48, 48, 63, 0, 0}}, /* 76 */
|
{0, 11, {0, 0, 96, 96, 96, 96, 96, 96, 96, 96, 126, 0, 0}}, /* 76 */
|
||||||
{0, 12, {0, 0, 33, 51, 51, 63, 63, 51, 51, 51, 51, 51, 0, 0}}, /* 77 */
|
{0, 11, {0, 0, 66, 102, 126, 126, 102, 102, 102, 102, 102, 0, 0}}, /* 77 */
|
||||||
{0, 12, {0, 0, 51, 51, 59, 59, 59, 55, 55, 55, 51, 51, 0, 0}}, /* 78 */
|
{0, 11, {0, 0, 102, 102, 118, 118, 126, 110, 110, 102, 102, 0, 0}}, /* 78 */
|
||||||
{0, 12, {0, 0, 30, 51, 51, 51, 51, 51, 51, 51, 51, 30, 0, 0}}, /* 79 */
|
{0, 11, {0, 0, 60, 102, 102, 102, 102, 102, 102, 102, 60, 0, 0}}, /* 79 */
|
||||||
{0, 12, {0, 0, 62, 51, 51, 51, 51, 62, 48, 48, 48, 48, 0, 0}}, /* 80 */
|
{0, 11, {0, 0, 124, 102, 102, 102, 124, 96, 96, 96, 96, 0, 0}}, /* 80 */
|
||||||
{0, 12, {0, 0, 30, 51, 51, 51, 51, 51, 59, 55, 51, 30, 3, 1}}, /* 81 */
|
{0, 11, {0, 0, 60, 102, 102, 102, 102, 102, 118, 110, 60, 6, 0}}, /* 81 */
|
||||||
{0, 12, {0, 0, 62, 51, 51, 51, 62, 54, 51, 51, 51, 51, 0, 0}}, /* 82 */
|
{0, 11, {0, 0, 124, 102, 102, 102, 124, 120, 108, 102, 98, 0, 0}}, /* 82 */
|
||||||
{0, 12, {0, 0, 30, 51, 51, 24, 12, 12, 6, 51, 51, 30, 0, 0}}, /* 83 */
|
{0, 11, {0, 0, 60, 102, 96, 96, 60, 6, 6, 102, 60, 0, 0}}, /* 83 */
|
||||||
{0, 12, {0, 0, 63, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0}}, /* 84 */
|
{0, 11, {0, 0, 126, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0}}, /* 84 */
|
||||||
{0, 12, {0, 0, 51, 51, 51, 51, 51, 51, 51, 51, 51, 30, 0, 0}}, /* 85 */
|
{0, 11, {0, 0, 102, 102, 102, 102, 102, 102, 102, 102, 60, 0, 0}}, /* 85 */
|
||||||
{0, 12, {0, 0, 51, 51, 51, 51, 51, 51, 51, 30, 30, 12, 0, 0}}, /* 86 */
|
{0, 11, {0, 0, 102, 102, 102, 36, 36, 60, 24, 24, 24, 0, 0}}, /* 86 */
|
||||||
{0, 12, {0, 0, 51, 51, 51, 51, 51, 63, 63, 63, 63, 18, 0, 0}}, /* 87 */
|
{0, 11, {0, 0, 102, 102, 102, 102, 102, 126, 126, 102, 66, 0, 0}}, /* 87 */
|
||||||
{0, 12, {0, 0, 51, 51, 30, 30, 12, 12, 30, 30, 51, 51, 0, 0}}, /* 88 */
|
{0, 11, {0, 0, 66, 102, 36, 60, 24, 60, 36, 102, 66, 0, 0}}, /* 88 */
|
||||||
{0, 12, {0, 0, 51, 51, 51, 30, 30, 12, 12, 12, 12, 12, 0, 0}}, /* 89 */
|
{0, 11, {0, 0, 102, 102, 60, 60, 24, 24, 24, 24, 24, 0, 0}}, /* 89 */
|
||||||
{0, 12, {0, 0, 63, 3, 6, 6, 12, 12, 24, 24, 48, 63, 0, 0}}, /* 90 */
|
{0, 11, {0, 0, 126, 6, 6, 12, 24, 48, 96, 96, 126, 0, 0}}, /* 90 */
|
||||||
{0, 12, {0, 31, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 31}}, /* 91 */
|
{0, 11, {0, 0, 60, 48, 48, 48, 48, 48, 48, 48, 60, 0, 0}}, /* 91 */
|
||||||
{0, 12, {0, 48, 48, 48, 24, 24, 12, 12, 12, 6, 6, 3, 3, 3}}, /* 92 */
|
{0, 11, {0, 0, 96, 96, 48, 48, 24, 12, 12, 6, 6, 0, 0}}, /* 92 */
|
||||||
{0, 12, {0, 62, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 62}}, /* 93 */
|
{0, 11, {0, 0, 60, 12, 12, 12, 12, 12, 12, 12, 60, 0, 0}}, /* 93 */
|
||||||
{0, 12, {12, 30, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 94 */
|
{0, 11, {0, 0, 24, 60, 102, 66, 0, 0, 0, 0, 0, 0, 0}}, /* 94 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 63}}, /* 95 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 126, 0}}, /* 95 */
|
||||||
{0, 12, {14, 12, 12, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 96 */
|
{0, 11, {0, 0, 56, 56, 24, 12, 0, 0, 0, 0, 0, 0, 0}}, /* 96 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 30, 51, 7, 27, 51, 51, 31, 0, 0}}, /* 97 */
|
{0, 11, {0, 0, 0, 0, 0, 60, 6, 62, 102, 102, 62, 0, 0}}, /* 97 */
|
||||||
{0, 12, {0, 0, 48, 48, 48, 62, 51, 51, 51, 51, 51, 62, 0, 0}}, /* 98 */
|
{0, 11, {0, 0, 96, 96, 96, 124, 102, 102, 102, 102, 124, 0, 0}}, /* 98 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 30, 51, 48, 48, 48, 51, 30, 0, 0}}, /* 99 */
|
{0, 11, {0, 0, 0, 0, 0, 60, 102, 96, 96, 102, 60, 0, 0}}, /* 99 */
|
||||||
{0, 12, {0, 0, 3, 3, 3, 31, 51, 51, 51, 51, 51, 31, 0, 0}}, /* 100 */
|
{0, 11, {0, 0, 6, 6, 6, 62, 102, 102, 102, 102, 62, 0, 0}}, /* 100 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 30, 51, 51, 63, 48, 51, 30, 0, 0}}, /* 101 */
|
{0, 11, {0, 0, 0, 0, 0, 60, 102, 126, 96, 102, 60, 0, 0}}, /* 101 */
|
||||||
{0, 12, {0, 0, 6, 15, 12, 12, 63, 12, 12, 12, 12, 12, 0, 0}}, /* 102 */
|
{0, 11, {0, 0, 28, 54, 48, 48, 120, 48, 48, 48, 48, 0, 0}}, /* 102 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 29, 55, 54, 54, 28, 16, 62, 51, 30}}, /* 103 */
|
{0, 11, {0, 0, 0, 0, 0, 58, 102, 102, 60, 96, 60, 102, 60}}, /* 103 */
|
||||||
{0, 12, {0, 0, 48, 48, 48, 62, 51, 51, 51, 51, 51, 51, 0, 0}}, /* 104 */
|
{0, 11, {0, 0, 96, 96, 96, 124, 102, 102, 102, 102, 102, 0, 0}}, /* 104 */
|
||||||
{0, 12, {0, 0, 12, 12, 0, 12, 12, 12, 12, 12, 12, 12, 0, 0}}, /* 105 */
|
{0, 11, {0, 0, 24, 24, 0, 56, 24, 24, 24, 24, 126, 0, 0}}, /* 105 */
|
||||||
{0, 12, {0, 0, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 54, 28}}, /* 106 */
|
{0, 11, {0, 0, 6, 6, 0, 6, 6, 6, 6, 6, 6, 102, 60}}, /* 106 */
|
||||||
{0, 12, {0, 0, 48, 48, 48, 50, 54, 60, 60, 54, 51, 49, 0, 0}}, /* 107 */
|
{0, 11, {0, 0, 96, 96, 96, 102, 108, 120, 120, 108, 102, 0, 0}}, /* 107 */
|
||||||
{0, 12, {0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0}}, /* 108 */
|
{0, 11, {0, 0, 56, 24, 24, 24, 24, 24, 24, 24, 126, 0, 0}}, /* 108 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 54, 63, 63, 63, 63, 63, 63, 0, 0}}, /* 109 */
|
{0, 11, {0, 0, 0, 0, 0, 108, 126, 126, 102, 102, 102, 0, 0}}, /* 109 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 62, 51, 51, 51, 51, 51, 51, 0, 0}}, /* 110 */
|
{0, 11, {0, 0, 0, 0, 0, 124, 102, 102, 102, 102, 102, 0, 0}}, /* 110 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 30, 51, 51, 51, 51, 51, 30, 0, 0}}, /* 111 */
|
{0, 11, {0, 0, 0, 0, 0, 60, 102, 102, 102, 102, 60, 0, 0}}, /* 111 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 62, 51, 51, 51, 51, 51, 62, 48, 48}}, /* 112 */
|
{0, 11, {0, 0, 0, 0, 0, 124, 102, 102, 102, 124, 96, 96, 96}}, /* 112 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 31, 51, 51, 51, 51, 51, 31, 3, 3}}, /* 113 */
|
{0, 11, {0, 0, 0, 0, 0, 62, 102, 102, 102, 62, 6, 6, 6}}, /* 113 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 62, 51, 51, 48, 48, 48, 48, 0, 0}}, /* 114 */
|
{0, 11, {0, 0, 0, 0, 0, 124, 102, 96, 96, 96, 96, 0, 0}}, /* 114 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 30, 51, 24, 12, 6, 51, 30, 0, 0}}, /* 115 */
|
{0, 11, {0, 0, 0, 0, 0, 60, 102, 48, 12, 102, 60, 0, 0}}, /* 115 */
|
||||||
{0, 12, {0, 0, 12, 12, 12, 63, 12, 12, 12, 12, 12, 7, 0, 0}}, /* 116 */
|
{0, 11, {0, 0, 0, 48, 48, 124, 48, 48, 48, 54, 28, 0, 0}}, /* 116 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 31, 0, 0}}, /* 117 */
|
{0, 11, {0, 0, 0, 0, 0, 102, 102, 102, 102, 102, 62, 0, 0}}, /* 117 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 51, 51, 51, 30, 30, 12, 12, 0, 0}}, /* 118 */
|
{0, 11, {0, 0, 0, 0, 0, 102, 102, 102, 60, 60, 24, 0, 0}}, /* 118 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 51, 51, 63, 63, 63, 63, 18, 0, 0}}, /* 119 */
|
{0, 11, {0, 0, 0, 0, 0, 102, 102, 102, 126, 126, 36, 0, 0}}, /* 119 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 51, 51, 30, 12, 30, 51, 51, 0, 0}}, /* 120 */
|
{0, 11, {0, 0, 0, 0, 0, 102, 102, 60, 60, 102, 102, 0, 0}}, /* 120 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 51, 51, 27, 27, 14, 14, 6, 54, 28}}, /* 121 */
|
{0, 11, {0, 0, 0, 0, 0, 102, 102, 102, 102, 62, 6, 102, 60}}, /* 121 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 63, 3, 6, 12, 24, 48, 63, 0, 0}}, /* 122 */
|
{0, 11, {0, 0, 0, 0, 0, 126, 6, 12, 48, 96, 126, 0, 0}}, /* 122 */
|
||||||
{0, 12, {0, 7, 12, 12, 12, 12, 12, 24, 12, 12, 12, 12, 12, 7}}, /* 123 */
|
{0, 11, {0, 0, 28, 48, 48, 24, 48, 24, 48, 48, 28, 0, 0}}, /* 123 */
|
||||||
{0, 12, {0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}}, /* 124 */
|
{0, 11, {0, 0, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0}}, /* 124 */
|
||||||
{0, 12, {0, 56, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 56}}, /* 125 */
|
{0, 11, {0, 0, 56, 12, 12, 24, 12, 24, 12, 12, 56, 0, 0}}, /* 125 */
|
||||||
{0, 12, {0, 16, 63, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 126 */
|
{0, 11, {0, 0, 50, 126, 76, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 126 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 127 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 127 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 128 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 128 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 129 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 129 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 130 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 130 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 131 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 131 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 132 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 132 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 133 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 133 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 134 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 134 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 135 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 135 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 136 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 136 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 137 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 137 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 138 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 138 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 139 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 139 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 140 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 140 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 141 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 141 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 142 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 142 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 143 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 143 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 144 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 144 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 145 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 145 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 146 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 146 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 147 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 147 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 148 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 148 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 149 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 149 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 150 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 150 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 151 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 151 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 152 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 152 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 153 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 153 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 154 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 154 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 155 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 155 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 156 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 156 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 157 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 157 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 158 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 158 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 159 */
|
{0, 11, {0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0}}, /* 159 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 160 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 160 */
|
||||||
{0, 12, {0, 0, 12, 12, 0, 12, 12, 12, 12, 12, 12, 12, 0, 0}}, /* 161 */
|
{0, 11, {0, 24, 24, 0, 24, 24, 24, 24, 24, 24, 24, 0, 0}}, /* 161 */
|
||||||
{0, 12, {0, 0, 0, 0, 12, 31, 45, 44, 44, 44, 45, 31, 12, 0}}, /* 162 */
|
{0, 11, {0, 0, 8, 62, 106, 104, 104, 106, 62, 8, 0, 0, 0}}, /* 162 */
|
||||||
{0, 12, {0, 0, 0, 14, 27, 24, 24, 60, 24, 24, 62, 27, 0, 0}}, /* 163 */
|
{0, 11, {0, 0, 28, 54, 48, 48, 124, 48, 48, 54, 92, 0, 0}}, /* 163 */
|
||||||
{0, 12, {0, 0, 0, 0, 51, 30, 26, 22, 30, 51, 0, 0, 0, 0}}, /* 164 */
|
{0, 11, {0, 0, 0, 0, 102, 126, 36, 36, 126, 102, 0, 0, 0}}, /* 164 */
|
||||||
{0, 12, {0, 0, 33, 51, 30, 63, 12, 12, 63, 12, 12, 12, 0, 0}}, /* 165 */
|
{0, 11, {0, 0, 102, 102, 60, 60, 126, 24, 126, 24, 24, 0, 0}}, /* 165 */
|
||||||
{0, 12, {0, 0, 12, 12, 12, 12, 0, 0, 12, 12, 12, 12, 0, 0}}, /* 166 */
|
{0, 11, {0, 24, 24, 24, 24, 0, 0, 24, 24, 24, 24, 0, 0}}, /* 166 */
|
||||||
{0, 12, {0, 30, 51, 24, 12, 30, 51, 30, 12, 6, 51, 30, 0, 0}}, /* 167 */
|
{0, 11, {0, 60, 102, 96, 60, 102, 102, 60, 6, 102, 60, 0, 0}}, /* 167 */
|
||||||
{0, 12, {0, 54, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 168 */
|
{0, 11, {0, 54, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 168 */
|
||||||
{0, 12, {0, 30, 51, 63, 59, 59, 59, 59, 59, 63, 51, 30, 0, 0}}, /* 169 */
|
{0, 11, {0, 60, 102, 66, 90, 114, 114, 90, 66, 102, 60, 0, 0}}, /* 169 */
|
||||||
{0, 12, {0, 14, 27, 15, 27, 27, 15, 0, 31, 0, 0, 0, 0, 0}}, /* 170 */
|
{0, 11, {0, 0, 60, 6, 62, 38, 62, 0, 62, 0, 0, 0, 0}}, /* 170 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 7, 15, 30, 60, 30, 15, 7, 0, 0}}, /* 171 */
|
{0, 11, {0, 0, 0, 26, 52, 104, 80, 104, 52, 26, 0, 0, 0}}, /* 171 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 126, 126, 6, 6, 6, 0, 0}}, /* 172 */
|
{0, 11, {0, 0, 0, 0, 0, 126, 126, 2, 2, 0, 0, 0, 0}}, /* 172 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 120, 120, 0, 0, 0, 0, 0}}, /* 173 */
|
{0, 11, {0, 0, 0, 0, 0, 62, 62, 0, 0, 0, 0, 0, 0}}, /* 173 */
|
||||||
{0, 12, {0, 30, 51, 63, 59, 59, 63, 59, 59, 59, 51, 30, 0, 0}}, /* 174 */
|
{0, 11, {0, 60, 102, 66, 94, 86, 94, 90, 86, 102, 60, 0, 0}}, /* 174 */
|
||||||
{0, 12, {0, 0, 120, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 175 */
|
{0, 11, {0, 62, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 175 */
|
||||||
{0, 12, {0, 28, 54, 54, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 176 */
|
{0, 11, {0, 0, 60, 102, 102, 60, 0, 0, 0, 0, 0, 0, 0}}, /* 176 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 12, 12, 63, 12, 12, 63, 0, 0}}, /* 177 */
|
{0, 11, {0, 0, 24, 24, 126, 126, 24, 24, 0, 126, 126, 0, 0}}, /* 177 */
|
||||||
{0, 12, {0, 28, 54, 6, 12, 24, 48, 62, 0, 0, 0, 0, 0, 0}}, /* 178 */
|
{0, 11, {0, 112, 88, 24, 48, 96, 120, 0, 0, 0, 0, 0, 0}}, /* 178 */
|
||||||
{0, 12, {0, 28, 54, 6, 28, 6, 54, 28, 0, 0, 0, 0, 0, 0}}, /* 179 */
|
{0, 11, {0, 112, 88, 48, 24, 88, 112, 0, 0, 0, 0, 0, 0}}, /* 179 */
|
||||||
{0, 12, {0, 6, 12, 24, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 180 */
|
{0, 11, {0, 12, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 180 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 51, 51, 51, 51, 55, 63, 48, 48}}, /* 181 */
|
{0, 11, {0, 0, 0, 0, 0, 102, 102, 102, 102, 102, 126, 64, 0}}, /* 181 */
|
||||||
{0, 12, {0, 0, 31, 59, 59, 59, 59, 27, 11, 11, 11, 11, 11, 15}}, /* 182 */
|
{0, 11, {0, 0, 62, 126, 122, 122, 122, 58, 26, 26, 26, 0, 0}}, /* 182 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0}}, /* 183 */
|
{0, 11, {0, 0, 0, 0, 0, 24, 24, 0, 0, 0, 0, 0, 0}}, /* 183 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 24}}, /* 184 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 48}}, /* 184 */
|
||||||
{0, 12, {0, 0, 24, 56, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0}}, /* 185 */
|
{0, 11, {0, 48, 112, 48, 48, 48, 120, 0, 0, 0, 0, 0, 0}}, /* 185 */
|
||||||
{0, 12, {0, 0, 14, 27, 27, 14, 0, 31, 0, 0, 0, 0, 0, 0}}, /* 186 */
|
{0, 11, {0, 28, 62, 34, 62, 28, 0, 62, 0, 0, 0, 0, 0}}, /* 186 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 56, 28, 14, 7, 14, 28, 56, 0, 0}}, /* 187 */
|
{0, 11, {0, 0, 0, 88, 44, 22, 10, 22, 44, 88, 0, 0, 0}}, /* 187 */
|
||||||
{0, 12, {0, 0, 25, 59, 26, 30, 30, 13, 27, 23, 55, 35, 0, 0}}, /* 188 */
|
{0, 11, {0, 48, 112, 48, 48, 50, 126, 14, 26, 30, 6, 0, 0}}, /* 188 */
|
||||||
{0, 12, {0, 0, 25, 59, 26, 30, 30, 14, 29, 19, 54, 39, 0, 0}}, /* 189 */
|
{0, 11, {0, 48, 112, 48, 48, 60, 118, 6, 12, 24, 30, 0, 0}}, /* 189 */
|
||||||
{0, 12, {0, 0, 49, 27, 58, 30, 60, 15, 27, 55, 39, 3, 0, 0}}, /* 190 */
|
{0, 11, {0, 112, 88, 48, 24, 90, 118, 14, 26, 30, 6, 0, 0}}, /* 190 */
|
||||||
{0, 12, {0, 0, 0, 6, 6, 0, 6, 6, 6, 6, 6, 51, 51, 30}}, /* 191 */
|
{0, 11, {0, 24, 24, 0, 24, 24, 48, 96, 102, 102, 60, 0, 0}}, /* 191 */
|
||||||
{0, 12, {28, 14, 0, 30, 63, 51, 51, 51, 63, 51, 51, 51, 0, 0}}, /* 192 */
|
{0, 11, {0, 24, 12, 0, 24, 60, 102, 102, 126, 102, 102, 0, 0}}, /* 192 */
|
||||||
{0, 12, {14, 28, 0, 30, 63, 51, 51, 51, 63, 51, 51, 51, 0, 0}}, /* 193 */
|
{0, 11, {0, 12, 24, 0, 24, 60, 102, 102, 126, 102, 102, 0, 0}}, /* 193 */
|
||||||
{0, 12, {12, 30, 0, 30, 63, 51, 51, 51, 63, 51, 51, 51, 0, 0}}, /* 194 */
|
{0, 11, {0, 56, 108, 0, 24, 60, 102, 102, 126, 102, 102, 0, 0}}, /* 194 */
|
||||||
{0, 12, {10, 20, 0, 30, 63, 51, 51, 51, 63, 51, 51, 51, 0, 0}}, /* 195 */
|
{0, 11, {0, 52, 88, 0, 24, 60, 102, 102, 126, 102, 102, 0, 0}}, /* 195 */
|
||||||
{0, 12, {18, 18, 0, 30, 63, 51, 51, 51, 63, 51, 51, 51, 0, 0}}, /* 196 */
|
{0, 11, {0, 102, 102, 0, 24, 60, 102, 102, 126, 102, 102, 0, 0}}, /* 196 */
|
||||||
{0, 12, {12, 12, 0, 30, 63, 51, 51, 51, 63, 51, 51, 51, 0, 0}}, /* 197 */
|
{0, 11, {0, 60, 36, 60, 24, 60, 102, 102, 126, 102, 102, 0, 0}}, /* 197 */
|
||||||
{0, 12, {0, 0, 63, 108, 108, 108, 110, 124, 108, 108, 108, 111, 0, 0}}, /* 198 */
|
{0, 11, {0, 0, 62, 124, 108, 108, 110, 124, 108, 108, 110, 0, 0}}, /* 198 */
|
||||||
{0, 12, {0, 0, 30, 51, 51, 48, 48, 48, 48, 51, 51, 30, 12, 24}}, /* 199 */
|
{0, 11, {0, 0, 60, 102, 96, 96, 96, 96, 96, 102, 60, 24, 48}}, /* 199 */
|
||||||
{0, 12, {28, 14, 0, 63, 48, 48, 48, 62, 48, 48, 48, 63, 0, 0}}, /* 200 */
|
{0, 11, {0, 24, 12, 0, 126, 96, 96, 120, 96, 96, 126, 0, 0}}, /* 200 */
|
||||||
{0, 12, {14, 28, 0, 63, 48, 48, 48, 62, 48, 48, 48, 63, 0, 0}}, /* 201 */
|
{0, 11, {0, 12, 24, 0, 126, 96, 96, 120, 96, 96, 126, 0, 0}}, /* 201 */
|
||||||
{0, 12, {12, 30, 0, 63, 48, 48, 48, 62, 48, 48, 48, 63, 0, 0}}, /* 202 */
|
{0, 11, {0, 56, 108, 0, 126, 96, 96, 120, 96, 96, 126, 0, 0}}, /* 202 */
|
||||||
{0, 12, {18, 18, 0, 63, 48, 48, 48, 62, 48, 48, 48, 63, 0, 0}}, /* 203 */
|
{0, 11, {0, 102, 102, 0, 126, 96, 96, 120, 96, 96, 126, 0, 0}}, /* 203 */
|
||||||
{0, 12, {28, 14, 0, 63, 12, 12, 12, 12, 12, 12, 12, 63, 0, 0}}, /* 204 */
|
{0, 11, {0, 24, 12, 0, 126, 24, 24, 24, 24, 24, 126, 0, 0}}, /* 204 */
|
||||||
{0, 12, {14, 28, 0, 63, 12, 12, 12, 12, 12, 12, 12, 63, 0, 0}}, /* 205 */
|
{0, 11, {0, 12, 24, 0, 126, 24, 24, 24, 24, 24, 126, 0, 0}}, /* 205 */
|
||||||
{0, 12, {12, 30, 0, 63, 12, 12, 12, 12, 12, 12, 12, 63, 0, 0}}, /* 206 */
|
{0, 11, {0, 56, 108, 0, 126, 24, 24, 24, 24, 24, 126, 0, 0}}, /* 206 */
|
||||||
{0, 12, {18, 18, 0, 63, 12, 12, 12, 12, 12, 12, 12, 63, 0, 0}}, /* 207 */
|
{0, 11, {0, 102, 102, 0, 126, 24, 24, 24, 24, 24, 126, 0, 0}}, /* 207 */
|
||||||
{0, 12, {0, 0, 60, 54, 51, 51, 127, 51, 51, 51, 54, 60, 0, 0}}, /* 208 */
|
{0, 11, {0, 0, 124, 54, 54, 54, 118, 54, 54, 54, 124, 0, 0}}, /* 208 */
|
||||||
{0, 12, {10, 20, 0, 51, 59, 59, 59, 55, 55, 55, 51, 51, 0, 0}}, /* 209 */
|
{0, 11, {0, 52, 88, 0, 102, 102, 118, 126, 110, 102, 102, 0, 0}}, /* 209 */
|
||||||
{0, 12, {28, 14, 0, 30, 51, 51, 51, 51, 51, 51, 51, 30, 0, 0}}, /* 210 */
|
{0, 11, {0, 24, 12, 0, 60, 102, 102, 102, 102, 102, 60, 0, 0}}, /* 210 */
|
||||||
{0, 12, {14, 28, 0, 30, 51, 51, 51, 51, 51, 51, 51, 30, 0, 0}}, /* 211 */
|
{0, 11, {0, 12, 24, 0, 60, 102, 102, 102, 102, 102, 60, 0, 0}}, /* 211 */
|
||||||
{0, 12, {12, 30, 0, 30, 51, 51, 51, 51, 51, 51, 51, 30, 0, 0}}, /* 212 */
|
{0, 11, {0, 56, 108, 0, 60, 102, 102, 102, 102, 102, 60, 0, 0}}, /* 212 */
|
||||||
{0, 12, {10, 20, 0, 30, 51, 51, 51, 51, 51, 51, 51, 30, 0, 0}}, /* 213 */
|
{0, 11, {0, 52, 88, 0, 60, 102, 102, 102, 102, 102, 60, 0, 0}}, /* 213 */
|
||||||
{0, 12, {18, 18, 0, 30, 51, 51, 51, 51, 51, 51, 51, 30, 0, 0}}, /* 214 */
|
{0, 11, {0, 102, 102, 0, 60, 102, 102, 102, 102, 102, 60, 0, 0}}, /* 214 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 99, 54, 28, 28, 54, 99, 65, 0, 0}}, /* 215 */
|
{0, 11, {0, 0, 0, 0, 0, 102, 60, 24, 60, 102, 0, 0, 0}}, /* 215 */
|
||||||
{0, 12, {1, 1, 30, 55, 55, 55, 55, 59, 59, 59, 59, 30, 32, 32}}, /* 216 */
|
{0, 11, {0, 0, 2, 60, 110, 110, 110, 118, 118, 118, 60, 64, 0}}, /* 216 */
|
||||||
{0, 12, {28, 14, 0, 51, 51, 51, 51, 51, 51, 51, 51, 30, 0, 0}}, /* 217 */
|
{0, 11, {0, 24, 12, 0, 102, 102, 102, 102, 102, 102, 60, 0, 0}}, /* 217 */
|
||||||
{0, 12, {14, 28, 0, 51, 51, 51, 51, 51, 51, 51, 51, 30, 0, 0}}, /* 218 */
|
{0, 11, {0, 12, 24, 0, 102, 102, 102, 102, 102, 102, 60, 0, 0}}, /* 218 */
|
||||||
{0, 12, {12, 30, 0, 51, 51, 51, 51, 51, 51, 51, 51, 30, 0, 0}}, /* 219 */
|
{0, 11, {0, 56, 108, 0, 102, 102, 102, 102, 102, 102, 60, 0, 0}}, /* 219 */
|
||||||
{0, 12, {18, 18, 0, 51, 51, 51, 51, 51, 51, 51, 51, 30, 0, 0}}, /* 220 */
|
{0, 11, {0, 102, 102, 0, 102, 102, 102, 102, 102, 102, 60, 0, 0}}, /* 220 */
|
||||||
{0, 12, {14, 28, 0, 51, 51, 51, 30, 30, 30, 12, 12, 12, 0, 0}}, /* 221 */
|
{0, 11, {0, 12, 24, 0, 102, 36, 60, 24, 24, 24, 24, 0, 0}}, /* 221 */
|
||||||
{0, 12, {0, 0, 48, 48, 62, 51, 51, 51, 51, 62, 48, 48, 0, 0}}, /* 222 */
|
{0, 11, {0, 0, 96, 124, 102, 102, 102, 124, 96, 96, 96, 0, 0}}, /* 222 */
|
||||||
{0, 12, {0, 0, 14, 27, 27, 27, 30, 27, 27, 27, 27, 62, 0, 0}}, /* 223 */
|
{0, 11, {0, 0, 0, 60, 102, 102, 124, 102, 102, 102, 124, 64, 0}}, /* 223 */
|
||||||
{0, 12, {0, 24, 12, 6, 0, 30, 51, 15, 27, 51, 51, 31, 0, 0}}, /* 224 */
|
{0, 11, {0, 24, 12, 0, 0, 60, 6, 62, 102, 110, 62, 0, 0}}, /* 224 */
|
||||||
{0, 12, {0, 6, 12, 24, 0, 30, 51, 15, 27, 51, 51, 31, 0, 0}}, /* 225 */
|
{0, 11, {0, 12, 24, 0, 0, 60, 6, 62, 102, 110, 62, 0, 0}}, /* 225 */
|
||||||
{0, 12, {0, 0, 12, 30, 0, 30, 51, 15, 27, 51, 51, 31, 0, 0}}, /* 226 */
|
{0, 11, {0, 56, 108, 0, 0, 60, 6, 62, 102, 110, 62, 0, 0}}, /* 226 */
|
||||||
{0, 12, {0, 0, 10, 20, 0, 30, 51, 15, 27, 51, 51, 31, 0, 0}}, /* 227 */
|
{0, 11, {0, 52, 88, 0, 0, 60, 6, 62, 102, 110, 62, 0, 0}}, /* 227 */
|
||||||
{0, 12, {0, 0, 18, 18, 0, 30, 51, 15, 27, 51, 51, 31, 0, 0}}, /* 228 */
|
{0, 11, {0, 54, 54, 0, 0, 60, 6, 62, 102, 110, 62, 0, 0}}, /* 228 */
|
||||||
{0, 12, {0, 12, 30, 12, 0, 30, 51, 15, 27, 51, 51, 31, 0, 0}}, /* 229 */
|
{0, 11, {0, 28, 20, 28, 0, 60, 6, 62, 102, 110, 62, 0, 0}}, /* 229 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 62, 109, 29, 47, 108, 111, 62, 0, 0}}, /* 230 */
|
{0, 11, {0, 0, 0, 0, 0, 60, 26, 62, 88, 90, 52, 0, 0}}, /* 230 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 30, 51, 48, 48, 48, 51, 30, 12, 24}}, /* 231 */
|
{0, 11, {0, 0, 0, 0, 0, 60, 102, 96, 96, 102, 60, 24, 48}}, /* 231 */
|
||||||
{0, 12, {0, 24, 12, 6, 0, 30, 51, 51, 63, 48, 51, 30, 0, 0}}, /* 232 */
|
{0, 11, {0, 24, 12, 0, 0, 60, 102, 126, 96, 102, 60, 0, 0}}, /* 232 */
|
||||||
{0, 12, {0, 6, 12, 24, 0, 30, 51, 51, 63, 48, 51, 30, 0, 0}}, /* 233 */
|
{0, 11, {0, 12, 24, 0, 0, 60, 102, 126, 96, 102, 60, 0, 0}}, /* 233 */
|
||||||
{0, 12, {0, 0, 12, 30, 0, 30, 51, 51, 63, 48, 51, 30, 0, 0}}, /* 234 */
|
{0, 11, {0, 56, 108, 0, 0, 60, 102, 126, 96, 102, 60, 0, 0}}, /* 234 */
|
||||||
{0, 12, {0, 0, 18, 18, 0, 30, 51, 51, 63, 48, 51, 30, 0, 0}}, /* 235 */
|
{0, 11, {0, 54, 54, 0, 0, 60, 102, 126, 96, 102, 60, 0, 0}}, /* 235 */
|
||||||
{0, 12, {0, 24, 12, 6, 0, 12, 12, 12, 12, 12, 12, 12, 0, 0}}, /* 236 */
|
{0, 11, {0, 24, 12, 0, 0, 56, 24, 24, 24, 24, 60, 0, 0}}, /* 236 */
|
||||||
{0, 12, {0, 6, 12, 24, 0, 12, 12, 12, 12, 12, 12, 12, 0, 0}}, /* 237 */
|
{0, 11, {0, 12, 24, 0, 0, 56, 24, 24, 24, 24, 60, 0, 0}}, /* 237 */
|
||||||
{0, 12, {0, 0, 12, 30, 0, 12, 12, 12, 12, 12, 12, 12, 0, 0}}, /* 238 */
|
{0, 11, {0, 56, 108, 0, 0, 56, 24, 24, 24, 24, 60, 0, 0}}, /* 238 */
|
||||||
{0, 12, {0, 0, 18, 18, 0, 12, 12, 12, 12, 12, 12, 12, 0, 0}}, /* 239 */
|
{0, 11, {0, 54, 54, 0, 0, 56, 24, 24, 24, 24, 60, 0, 0}}, /* 239 */
|
||||||
{0, 12, {0, 20, 8, 22, 6, 30, 54, 54, 54, 54, 54, 28, 0, 0}}, /* 240 */
|
{0, 11, {0, 36, 24, 24, 40, 60, 102, 102, 102, 102, 60, 0, 0}}, /* 240 */
|
||||||
{0, 12, {0, 0, 10, 20, 0, 62, 51, 51, 51, 51, 51, 51, 0, 0}}, /* 241 */
|
{0, 11, {0, 52, 88, 0, 0, 124, 118, 102, 102, 102, 102, 0, 0}}, /* 241 */
|
||||||
{0, 12, {0, 24, 12, 6, 0, 30, 51, 51, 51, 51, 51, 30, 0, 0}}, /* 242 */
|
{0, 11, {0, 24, 12, 0, 0, 60, 102, 102, 102, 102, 60, 0, 0}}, /* 242 */
|
||||||
{0, 12, {0, 6, 12, 24, 0, 30, 51, 51, 51, 51, 51, 30, 0, 0}}, /* 243 */
|
{0, 11, {0, 12, 24, 0, 0, 60, 102, 102, 102, 102, 60, 0, 0}}, /* 243 */
|
||||||
{0, 12, {0, 0, 12, 30, 0, 30, 51, 51, 51, 51, 51, 30, 0, 0}}, /* 244 */
|
{0, 11, {0, 56, 108, 0, 0, 60, 102, 102, 102, 102, 60, 0, 0}}, /* 244 */
|
||||||
{0, 12, {0, 0, 10, 20, 0, 30, 51, 51, 51, 51, 51, 30, 0, 0}}, /* 245 */
|
{0, 11, {0, 52, 88, 0, 0, 60, 102, 102, 102, 102, 60, 0, 0}}, /* 245 */
|
||||||
{0, 12, {0, 0, 18, 18, 0, 30, 51, 51, 51, 51, 51, 30, 0, 0}}, /* 246 */
|
{0, 11, {0, 54, 54, 0, 0, 60, 102, 102, 102, 102, 60, 0, 0}}, /* 246 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 24, 0, 126, 0, 24, 0, 0}}, /* 247 */
|
{0, 11, {0, 0, 0, 24, 24, 0, 126, 0, 24, 24, 0, 0, 0}}, /* 247 */
|
||||||
{0, 12, {0, 0, 0, 1, 2, 30, 55, 55, 59, 59, 51, 30, 32, 32}}, /* 248 */
|
{0, 11, {0, 0, 0, 2, 60, 102, 110, 102, 118, 102, 60, 64, 0}}, /* 248 */
|
||||||
{0, 12, {0, 16, 24, 12, 4, 51, 51, 51, 51, 51, 51, 31, 0, 0}}, /* 249 */
|
{0, 11, {0, 24, 12, 0, 0, 102, 102, 102, 102, 110, 62, 0, 0}}, /* 249 */
|
||||||
{0, 12, {0, 2, 6, 12, 8, 51, 51, 51, 51, 51, 51, 31, 0, 0}}, /* 250 */
|
{0, 11, {0, 12, 24, 0, 0, 102, 102, 102, 102, 110, 62, 0, 0}}, /* 250 */
|
||||||
{0, 12, {0, 0, 12, 30, 0, 51, 51, 51, 51, 51, 51, 31, 0, 0}}, /* 251 */
|
{0, 11, {0, 56, 108, 0, 0, 102, 102, 102, 102, 110, 62, 0, 0}}, /* 251 */
|
||||||
{0, 12, {0, 0, 18, 18, 0, 51, 51, 51, 51, 51, 51, 31, 0, 0}}, /* 252 */
|
{0, 11, {0, 54, 54, 0, 0, 102, 102, 102, 102, 110, 62, 0, 0}}, /* 252 */
|
||||||
{0, 12, {0, 2, 6, 12, 8, 51, 51, 51, 30, 14, 14, 12, 60, 24}}, /* 253 */
|
{0, 11, {0, 12, 24, 0, 0, 102, 102, 102, 110, 62, 6, 102, 60}}, /* 253 */
|
||||||
{0, 12, {0, 0, 48, 48, 48, 62, 51, 51, 51, 51, 51, 62, 48, 48}}, /* 254 */
|
{0, 11, {0, 0, 0, 96, 96, 124, 118, 102, 102, 118, 124, 96, 96}}, /* 254 */
|
||||||
{0, 12, {0, 0, 18, 18, 0, 51, 51, 51, 30, 14, 14, 12, 60, 24}} /* 255 */
|
{0, 11, {0, 54, 54, 0, 0, 102, 102, 102, 110, 62, 6, 102, 60}} /* 255 */
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -2,263 +2,263 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copyright notice:
|
* Copyright notice:
|
||||||
* "Public domain font. Share and enjoy."
|
* "(null)"
|
||||||
*/
|
*/
|
||||||
MwFont MwFontData[] = {
|
MwFont MwFontData[] = {
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 0 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 0 */
|
||||||
{0, 12, {0, 0, 12, 12, 30, 30, 63, 63, 30, 30, 12, 12, 0, 0}}, /* 1 */
|
{0, 11, {0, 0, 0, 0, 0, 16, 56, 124, 56, 16, 0, 0, 0}}, /* 1 */
|
||||||
{0, 12, {42, 85, 42, 85, 42, 85, 42, 85, 42, 85, 42, 85, 42, 85}}, /* 2 */
|
{0, 11, {0, 84, 42, 84, 42, 84, 42, 84, 42, 84, 42, 84, 42}}, /* 2 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 3 */
|
{0, 11, {0, 0, 72, 72, 120, 72, 72, 14, 4, 4, 4, 4, 0}}, /* 3 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 4 */
|
{0, 11, {0, 0, 120, 64, 112, 64, 64, 30, 16, 28, 16, 16, 0}}, /* 4 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 5 */
|
{0, 11, {0, 0, 56, 64, 64, 64, 56, 28, 18, 28, 20, 18, 0}}, /* 5 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 6 */
|
{0, 11, {0, 0, 64, 64, 64, 64, 120, 30, 16, 28, 16, 16, 0}}, /* 6 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 7 */
|
{0, 11, {0, 0, 56, 68, 68, 56, 0, 0, 0, 0, 0, 0, 0}}, /* 7 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 8 */
|
{0, 11, {0, 0, 0, 16, 16, 124, 16, 16, 0, 124, 0, 0, 0}}, /* 8 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 9 */
|
{0, 11, {0, 0, 72, 104, 88, 72, 72, 16, 16, 16, 16, 30, 0}}, /* 9 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 10 */
|
{0, 11, {0, 0, 68, 68, 40, 40, 16, 62, 8, 8, 8, 8, 0}}, /* 10 */
|
||||||
{0, 12, {8, 8, 8, 8, 8, 8, 8, 120, 0, 0, 0, 0, 0, 0}}, /* 11 */
|
{0, 11, {8, 8, 8, 8, 8, 8, 120, 0, 0, 0, 0, 0, 0}}, /* 11 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 120, 8, 8, 8, 8, 8, 8}}, /* 12 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 120, 8, 8, 8, 8, 8, 8}}, /* 12 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 15, 8, 8, 8, 8, 8, 8}}, /* 13 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 15, 8, 8, 8, 8, 8, 8}}, /* 13 */
|
||||||
{0, 12, {8, 8, 8, 8, 8, 8, 8, 15, 0, 0, 0, 0, 0, 0}}, /* 14 */
|
{0, 11, {8, 8, 8, 8, 8, 8, 15, 0, 0, 0, 0, 0, 0}}, /* 14 */
|
||||||
{0, 12, {8, 8, 8, 8, 8, 8, 8, 127, 8, 8, 8, 8, 8, 8}}, /* 15 */
|
{0, 11, {8, 8, 8, 8, 8, 8, 127, 8, 8, 8, 8, 8, 8}}, /* 15 */
|
||||||
{0, 12, {127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 16 */
|
{0, 11, {0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 16 */
|
||||||
{0, 12, {0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 17 */
|
{0, 11, {0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 17 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0}}, /* 18 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0}}, /* 18 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 0}}, /* 19 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 0}}, /* 19 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127}}, /* 20 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0}}, /* 20 */
|
||||||
{0, 12, {8, 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8}}, /* 21 */
|
{0, 11, {8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8}}, /* 21 */
|
||||||
{0, 12, {8, 8, 8, 8, 8, 8, 8, 120, 8, 8, 8, 8, 8, 8}}, /* 22 */
|
{0, 11, {8, 8, 8, 8, 8, 8, 120, 8, 8, 8, 8, 8, 8}}, /* 22 */
|
||||||
{0, 12, {8, 8, 8, 8, 8, 8, 8, 127, 0, 0, 0, 0, 0, 0}}, /* 23 */
|
{0, 11, {8, 8, 8, 8, 8, 8, 127, 0, 0, 0, 0, 0, 0}}, /* 23 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 127, 8, 8, 8, 8, 8, 8}}, /* 24 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 127, 8, 8, 8, 8, 8, 8}}, /* 24 */
|
||||||
{0, 12, {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}}, /* 25 */
|
{0, 11, {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}}, /* 25 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 26 */
|
{0, 11, {0, 0, 0, 2, 12, 48, 64, 48, 12, 2, 126, 0, 0}}, /* 26 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 27 */
|
{0, 11, {0, 0, 0, 64, 48, 12, 2, 12, 48, 64, 126, 0, 0}}, /* 27 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 28 */
|
{0, 11, {0, 0, 0, 0, 0, 126, 36, 36, 36, 36, 68, 0, 0}}, /* 28 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 29 */
|
{0, 11, {0, 0, 0, 2, 4, 126, 8, 16, 126, 32, 64, 0, 0}}, /* 29 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 30 */
|
{0, 11, {0, 0, 28, 34, 32, 32, 112, 32, 32, 34, 92, 0, 0}}, /* 30 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 31 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0}}, /* 31 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 32 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 32 */
|
||||||
{0, 12, {0, 0, 8, 8, 8, 8, 8, 8, 8, 0, 8, 8, 0, 0}}, /* 33 */
|
{0, 11, {0, 0, 8, 8, 8, 8, 8, 8, 8, 0, 8, 0, 0}}, /* 33 */
|
||||||
{0, 12, {54, 18, 18, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 34 */
|
{0, 11, {0, 0, 20, 20, 20, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 34 */
|
||||||
{0, 12, {0, 0, 5, 5, 5, 63, 10, 10, 63, 20, 20, 20, 0, 0}}, /* 35 */
|
{0, 11, {0, 0, 0, 20, 20, 62, 20, 62, 20, 20, 0, 0, 0}}, /* 35 */
|
||||||
{0, 12, {0, 0, 4, 30, 37, 37, 20, 14, 5, 37, 37, 30, 4, 0}}, /* 36 */
|
{0, 11, {0, 0, 0, 8, 30, 40, 28, 10, 60, 8, 0, 0, 0}}, /* 36 */
|
||||||
{0, 12, {0, 0, 25, 37, 38, 28, 4, 8, 14, 25, 41, 38, 0, 0}}, /* 37 */
|
{0, 11, {0, 0, 34, 82, 36, 8, 8, 16, 36, 74, 68, 0, 0}}, /* 37 */
|
||||||
{0, 12, {0, 0, 12, 18, 18, 18, 12, 25, 37, 34, 38, 25, 0, 0}}, /* 38 */
|
{0, 11, {0, 0, 0, 0, 48, 72, 72, 48, 74, 68, 58, 0, 0}}, /* 38 */
|
||||||
{0, 12, {24, 8, 8, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 39 */
|
{0, 11, {0, 0, 28, 24, 32, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 39 */
|
||||||
{0, 12, {0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 4, 4, 2, 1}}, /* 40 */
|
{0, 11, {0, 0, 4, 8, 8, 16, 16, 16, 8, 8, 4, 0, 0}}, /* 40 */
|
||||||
{0, 12, {0, 32, 16, 8, 8, 4, 4, 4, 4, 4, 8, 8, 16, 32}}, /* 41 */
|
{0, 11, {0, 0, 16, 8, 8, 4, 4, 4, 8, 8, 16, 0, 0}}, /* 41 */
|
||||||
{0, 12, {0, 0, 0, 4, 21, 14, 4, 4, 14, 21, 4, 0, 0, 0}}, /* 42 */
|
{0, 11, {0, 0, 0, 0, 36, 24, 126, 24, 36, 0, 0, 0, 0}}, /* 42 */
|
||||||
{0, 12, {0, 0, 0, 0, 8, 8, 8, 62, 8, 8, 8, 0, 0, 0}}, /* 43 */
|
{0, 11, {0, 0, 0, 0, 8, 8, 62, 8, 8, 0, 0, 0, 0}}, /* 43 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 8, 8, 16}}, /* 44 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 24, 32, 0}}, /* 44 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0}}, /* 45 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0}}, /* 45 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0}}, /* 46 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 28, 8, 0}}, /* 46 */
|
||||||
{0, 12, {0, 1, 1, 2, 2, 4, 4, 4, 8, 8, 16, 16, 32, 32}}, /* 47 */
|
{0, 11, {0, 0, 2, 2, 4, 4, 8, 16, 16, 32, 32, 0, 0}}, /* 47 */
|
||||||
{0, 12, {0, 0, 12, 18, 33, 33, 33, 33, 33, 33, 18, 12, 0, 0}}, /* 48 */
|
{0, 11, {0, 0, 24, 36, 66, 66, 66, 66, 66, 36, 24, 0, 0}}, /* 48 */
|
||||||
{0, 12, {0, 0, 4, 12, 20, 4, 4, 4, 4, 4, 4, 31, 0, 0}}, /* 49 */
|
{0, 11, {0, 0, 8, 24, 40, 8, 8, 8, 8, 8, 62, 0, 0}}, /* 49 */
|
||||||
{0, 12, {0, 0, 30, 33, 33, 1, 2, 2, 4, 8, 16, 63, 0, 0}}, /* 50 */
|
{0, 11, {0, 0, 60, 66, 66, 2, 4, 24, 32, 64, 126, 0, 0}}, /* 50 */
|
||||||
{0, 12, {0, 0, 30, 33, 33, 1, 14, 1, 1, 33, 33, 30, 0, 0}}, /* 51 */
|
{0, 11, {0, 0, 126, 2, 4, 8, 28, 2, 2, 66, 60, 0, 0}}, /* 51 */
|
||||||
{0, 12, {0, 0, 2, 6, 10, 10, 18, 18, 34, 63, 2, 2, 0, 0}}, /* 52 */
|
{0, 11, {0, 0, 4, 12, 20, 36, 68, 68, 126, 4, 4, 0, 0}}, /* 52 */
|
||||||
{0, 12, {0, 0, 63, 32, 32, 62, 33, 1, 1, 33, 33, 30, 0, 0}}, /* 53 */
|
{0, 11, {0, 0, 126, 64, 64, 92, 98, 2, 2, 66, 60, 0, 0}}, /* 53 */
|
||||||
{0, 12, {0, 0, 14, 17, 33, 32, 46, 49, 33, 33, 33, 30, 0, 0}}, /* 54 */
|
{0, 11, {0, 0, 28, 32, 64, 64, 92, 98, 66, 66, 60, 0, 0}}, /* 54 */
|
||||||
{0, 12, {0, 0, 63, 33, 34, 2, 4, 4, 4, 4, 4, 4, 0, 0}}, /* 55 */
|
{0, 11, {0, 0, 126, 2, 4, 8, 8, 16, 16, 32, 32, 0, 0}}, /* 55 */
|
||||||
{0, 12, {0, 0, 30, 33, 33, 18, 12, 18, 33, 33, 33, 30, 0, 0}}, /* 56 */
|
{0, 11, {0, 0, 60, 66, 66, 66, 60, 66, 66, 66, 60, 0, 0}}, /* 56 */
|
||||||
{0, 12, {0, 0, 30, 33, 33, 33, 35, 29, 1, 33, 34, 28, 0, 0}}, /* 57 */
|
{0, 11, {0, 0, 60, 66, 66, 70, 58, 2, 2, 4, 56, 0, 0}}, /* 57 */
|
||||||
{0, 12, {0, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0}}, /* 58 */
|
{0, 11, {0, 0, 0, 0, 8, 28, 8, 0, 0, 8, 28, 8, 0}}, /* 58 */
|
||||||
{0, 12, {0, 0, 0, 0, 8, 8, 0, 0, 0, 24, 8, 8, 16, 0}}, /* 59 */
|
{0, 11, {0, 0, 0, 0, 8, 28, 8, 0, 0, 28, 24, 32, 0}}, /* 59 */
|
||||||
{0, 12, {0, 0, 0, 2, 4, 8, 16, 32, 16, 8, 4, 2, 0, 0}}, /* 60 */
|
{0, 11, {0, 0, 2, 4, 8, 16, 32, 16, 8, 4, 2, 0, 0}}, /* 60 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 63, 0, 0, 63, 0, 0, 0, 0, 0}}, /* 61 */
|
{0, 11, {0, 0, 0, 0, 0, 126, 0, 0, 126, 0, 0, 0, 0}}, /* 61 */
|
||||||
{0, 12, {0, 0, 0, 32, 16, 8, 4, 2, 4, 8, 16, 32, 0, 0}}, /* 62 */
|
{0, 11, {0, 0, 32, 16, 8, 4, 2, 4, 8, 16, 32, 0, 0}}, /* 62 */
|
||||||
{0, 12, {0, 0, 30, 33, 33, 2, 4, 4, 4, 0, 4, 4, 0, 0}}, /* 63 */
|
{0, 11, {0, 0, 60, 66, 66, 2, 4, 8, 8, 0, 8, 0, 0}}, /* 63 */
|
||||||
{0, 12, {0, 0, 14, 17, 39, 41, 41, 41, 41, 39, 16, 15, 0, 0}}, /* 64 */
|
{0, 11, {0, 0, 60, 66, 66, 78, 82, 86, 74, 64, 60, 0, 0}}, /* 64 */
|
||||||
{0, 12, {0, 0, 8, 12, 20, 18, 34, 33, 63, 33, 33, 33, 0, 0}}, /* 65 */
|
{0, 11, {0, 0, 24, 36, 66, 66, 66, 126, 66, 66, 66, 0, 0}}, /* 65 */
|
||||||
{0, 12, {0, 0, 62, 33, 33, 34, 62, 33, 33, 33, 33, 62, 0, 0}}, /* 66 */
|
{0, 11, {0, 0, 124, 34, 34, 34, 60, 34, 34, 34, 124, 0, 0}}, /* 66 */
|
||||||
{0, 12, {0, 0, 30, 33, 33, 32, 32, 32, 32, 33, 33, 30, 0, 0}}, /* 67 */
|
{0, 11, {0, 0, 60, 66, 64, 64, 64, 64, 64, 66, 60, 0, 0}}, /* 67 */
|
||||||
{0, 12, {0, 0, 60, 34, 33, 33, 33, 33, 33, 33, 34, 60, 0, 0}}, /* 68 */
|
{0, 11, {0, 0, 124, 34, 34, 34, 34, 34, 34, 34, 124, 0, 0}}, /* 68 */
|
||||||
{0, 12, {0, 0, 63, 32, 32, 32, 62, 32, 32, 32, 32, 63, 0, 0}}, /* 69 */
|
{0, 11, {0, 0, 126, 64, 64, 64, 120, 64, 64, 64, 126, 0, 0}}, /* 69 */
|
||||||
{0, 12, {0, 0, 63, 32, 32, 32, 62, 32, 32, 32, 32, 32, 0, 0}}, /* 70 */
|
{0, 11, {0, 0, 126, 64, 64, 64, 120, 64, 64, 64, 64, 0, 0}}, /* 70 */
|
||||||
{0, 12, {0, 0, 30, 33, 33, 32, 32, 39, 33, 33, 33, 30, 0, 0}}, /* 71 */
|
{0, 11, {0, 0, 60, 66, 64, 64, 64, 78, 66, 70, 58, 0, 0}}, /* 71 */
|
||||||
{0, 12, {0, 0, 33, 33, 33, 33, 63, 33, 33, 33, 33, 33, 0, 0}}, /* 72 */
|
{0, 11, {0, 0, 66, 66, 66, 66, 126, 66, 66, 66, 66, 0, 0}}, /* 72 */
|
||||||
{0, 12, {0, 0, 31, 4, 4, 4, 4, 4, 4, 4, 4, 31, 0, 0}}, /* 73 */
|
{0, 11, {0, 0, 124, 16, 16, 16, 16, 16, 16, 16, 124, 0, 0}}, /* 73 */
|
||||||
{0, 12, {0, 0, 1, 1, 1, 1, 1, 1, 1, 33, 34, 28, 0, 0}}, /* 74 */
|
{0, 11, {0, 0, 14, 4, 4, 4, 4, 4, 4, 68, 56, 0, 0}}, /* 74 */
|
||||||
{0, 12, {0, 0, 33, 34, 36, 40, 56, 36, 36, 34, 33, 33, 0, 0}}, /* 75 */
|
{0, 11, {0, 0, 66, 68, 72, 80, 96, 80, 72, 68, 66, 0, 0}}, /* 75 */
|
||||||
{0, 12, {0, 0, 32, 32, 32, 32, 32, 32, 32, 32, 32, 63, 0, 0}}, /* 76 */
|
{0, 11, {0, 0, 64, 64, 64, 64, 64, 64, 64, 64, 126, 0, 0}}, /* 76 */
|
||||||
{0, 12, {0, 0, 33, 35, 51, 53, 45, 41, 41, 33, 33, 33, 0, 0}}, /* 77 */
|
{0, 11, {0, 0, 66, 102, 102, 90, 90, 66, 66, 66, 66, 0, 0}}, /* 77 */
|
||||||
{0, 12, {0, 0, 49, 49, 41, 41, 41, 37, 37, 37, 35, 35, 0, 0}}, /* 78 */
|
{0, 11, {0, 0, 66, 66, 98, 82, 74, 70, 66, 66, 66, 0, 0}}, /* 78 */
|
||||||
{0, 12, {0, 0, 30, 33, 33, 33, 33, 33, 33, 33, 33, 30, 0, 0}}, /* 79 */
|
{0, 11, {0, 0, 60, 66, 66, 66, 66, 66, 66, 66, 60, 0, 0}}, /* 79 */
|
||||||
{0, 12, {0, 0, 62, 33, 33, 33, 33, 62, 32, 32, 32, 32, 0, 0}}, /* 80 */
|
{0, 11, {0, 0, 124, 66, 66, 66, 124, 64, 64, 64, 64, 0, 0}}, /* 80 */
|
||||||
{0, 12, {0, 0, 30, 33, 33, 33, 33, 33, 57, 37, 35, 30, 2, 1}}, /* 81 */
|
{0, 11, {0, 0, 60, 66, 66, 66, 66, 66, 82, 74, 60, 2, 0}}, /* 81 */
|
||||||
{0, 12, {0, 0, 62, 33, 33, 33, 62, 34, 33, 33, 33, 33, 0, 0}}, /* 82 */
|
{0, 11, {0, 0, 124, 66, 66, 66, 124, 80, 72, 68, 66, 0, 0}}, /* 82 */
|
||||||
{0, 12, {0, 0, 30, 33, 33, 16, 8, 4, 2, 33, 33, 30, 0, 0}}, /* 83 */
|
{0, 11, {0, 0, 60, 66, 64, 64, 60, 2, 2, 66, 60, 0, 0}}, /* 83 */
|
||||||
{0, 12, {0, 0, 63, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0}}, /* 84 */
|
{0, 11, {0, 0, 124, 16, 16, 16, 16, 16, 16, 16, 16, 0, 0}}, /* 84 */
|
||||||
{0, 12, {0, 0, 33, 33, 33, 33, 33, 33, 33, 33, 33, 30, 0, 0}}, /* 85 */
|
{0, 11, {0, 0, 66, 66, 66, 66, 66, 66, 66, 66, 60, 0, 0}}, /* 85 */
|
||||||
{0, 12, {0, 0, 33, 33, 33, 34, 18, 18, 20, 12, 8, 8, 0, 0}}, /* 86 */
|
{0, 11, {0, 0, 66, 66, 66, 36, 36, 36, 24, 24, 24, 0, 0}}, /* 86 */
|
||||||
{0, 12, {0, 0, 37, 37, 37, 37, 37, 63, 18, 18, 18, 18, 0, 0}}, /* 87 */
|
{0, 11, {0, 0, 66, 66, 66, 66, 90, 90, 102, 102, 66, 0, 0}}, /* 87 */
|
||||||
{0, 12, {0, 0, 33, 33, 18, 18, 12, 12, 18, 18, 33, 33, 0, 0}}, /* 88 */
|
{0, 11, {0, 0, 66, 66, 36, 36, 24, 36, 36, 66, 66, 0, 0}}, /* 88 */
|
||||||
{0, 12, {0, 0, 33, 33, 34, 18, 20, 12, 8, 8, 8, 8, 0, 0}}, /* 89 */
|
{0, 11, {0, 0, 68, 68, 40, 40, 16, 16, 16, 16, 16, 0, 0}}, /* 89 */
|
||||||
{0, 12, {0, 0, 63, 1, 2, 4, 4, 8, 16, 16, 32, 63, 0, 0}}, /* 90 */
|
{0, 11, {0, 0, 126, 2, 4, 8, 24, 16, 32, 64, 126, 0, 0}}, /* 90 */
|
||||||
{0, 12, {0, 15, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 15}}, /* 91 */
|
{0, 11, {0, 0, 60, 32, 32, 32, 32, 32, 32, 32, 60, 0, 0}}, /* 91 */
|
||||||
{0, 12, {0, 32, 32, 16, 16, 8, 8, 8, 4, 4, 2, 2, 1, 1}}, /* 92 */
|
{0, 11, {0, 0, 32, 32, 16, 16, 8, 4, 4, 2, 2, 0, 0}}, /* 92 */
|
||||||
{0, 12, {0, 60, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 60}}, /* 93 */
|
{0, 11, {0, 0, 60, 4, 4, 4, 4, 4, 4, 4, 60, 0, 0}}, /* 93 */
|
||||||
{0, 12, {12, 18, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 94 */
|
{0, 11, {0, 0, 8, 20, 34, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 94 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63}}, /* 95 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0}}, /* 95 */
|
||||||
{0, 12, {6, 4, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 96 */
|
{0, 11, {0, 0, 56, 24, 4, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 96 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 30, 33, 7, 25, 33, 35, 29, 0, 0}}, /* 97 */
|
{0, 11, {0, 0, 0, 0, 0, 60, 2, 62, 66, 70, 58, 0, 0}}, /* 97 */
|
||||||
{0, 12, {0, 0, 32, 32, 32, 46, 49, 33, 33, 33, 49, 46, 0, 0}}, /* 98 */
|
{0, 11, {0, 0, 64, 64, 64, 92, 98, 66, 66, 98, 92, 0, 0}}, /* 98 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 30, 33, 32, 32, 32, 33, 30, 0, 0}}, /* 99 */
|
{0, 11, {0, 0, 0, 0, 0, 60, 66, 64, 64, 66, 60, 0, 0}}, /* 99 */
|
||||||
{0, 12, {0, 0, 1, 1, 1, 29, 35, 33, 33, 33, 35, 29, 0, 0}}, /* 100 */
|
{0, 11, {0, 0, 2, 2, 2, 58, 70, 66, 66, 70, 58, 0, 0}}, /* 100 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 30, 33, 33, 63, 32, 33, 30, 0, 0}}, /* 101 */
|
{0, 11, {0, 0, 0, 0, 0, 60, 66, 126, 64, 66, 60, 0, 0}}, /* 101 */
|
||||||
{0, 12, {0, 0, 6, 9, 8, 8, 62, 8, 8, 8, 8, 8, 0, 0}}, /* 102 */
|
{0, 11, {0, 0, 28, 34, 32, 32, 120, 32, 32, 32, 32, 0, 0}}, /* 102 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 29, 34, 34, 34, 28, 16, 46, 33, 30}}, /* 103 */
|
{0, 11, {0, 0, 0, 0, 0, 58, 68, 68, 56, 64, 60, 66, 60}}, /* 103 */
|
||||||
{0, 12, {0, 0, 32, 32, 32, 46, 49, 33, 33, 33, 33, 33, 0, 0}}, /* 104 */
|
{0, 11, {0, 0, 64, 64, 64, 92, 98, 66, 66, 66, 66, 0, 0}}, /* 104 */
|
||||||
{0, 12, {0, 0, 8, 8, 0, 8, 8, 8, 8, 8, 8, 8, 0, 0}}, /* 105 */
|
{0, 11, {0, 0, 0, 16, 0, 48, 16, 16, 16, 16, 124, 0, 0}}, /* 105 */
|
||||||
{0, 12, {0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 34, 28}}, /* 106 */
|
{0, 11, {0, 0, 0, 4, 0, 12, 4, 4, 4, 4, 68, 68, 56}}, /* 106 */
|
||||||
{0, 12, {0, 0, 32, 32, 32, 34, 36, 40, 56, 36, 34, 33, 0, 0}}, /* 107 */
|
{0, 11, {0, 0, 64, 64, 64, 68, 72, 112, 72, 68, 66, 0, 0}}, /* 107 */
|
||||||
{0, 12, {0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0}}, /* 108 */
|
{0, 11, {0, 0, 48, 16, 16, 16, 16, 16, 16, 16, 124, 0, 0}}, /* 108 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 62, 41, 41, 41, 41, 41, 41, 0, 0}}, /* 109 */
|
{0, 11, {0, 0, 0, 0, 0, 104, 84, 84, 84, 84, 68, 0, 0}}, /* 109 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 46, 49, 33, 33, 33, 33, 33, 0, 0}}, /* 110 */
|
{0, 11, {0, 0, 0, 0, 0, 92, 98, 66, 66, 66, 66, 0, 0}}, /* 110 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 30, 33, 33, 33, 33, 33, 30, 0, 0}}, /* 111 */
|
{0, 11, {0, 0, 0, 0, 0, 60, 66, 66, 66, 66, 60, 0, 0}}, /* 111 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 46, 49, 33, 33, 33, 49, 46, 32, 32}}, /* 112 */
|
{0, 11, {0, 0, 0, 0, 0, 92, 98, 66, 98, 92, 64, 64, 64}}, /* 112 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 29, 35, 33, 33, 33, 35, 29, 1, 1}}, /* 113 */
|
{0, 11, {0, 0, 0, 0, 0, 58, 70, 66, 70, 58, 2, 2, 2}}, /* 113 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 46, 49, 33, 32, 32, 32, 32, 0, 0}}, /* 114 */
|
{0, 11, {0, 0, 0, 0, 0, 92, 34, 32, 32, 32, 32, 0, 0}}, /* 114 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 30, 33, 16, 12, 2, 33, 30, 0, 0}}, /* 115 */
|
{0, 11, {0, 0, 0, 0, 0, 60, 66, 48, 12, 66, 60, 0, 0}}, /* 115 */
|
||||||
{0, 12, {0, 0, 8, 8, 8, 63, 8, 8, 8, 8, 8, 7, 0, 0}}, /* 116 */
|
{0, 11, {0, 0, 0, 32, 32, 120, 32, 32, 32, 34, 28, 0, 0}}, /* 116 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 33, 33, 33, 33, 33, 35, 29, 0, 0}}, /* 117 */
|
{0, 11, {0, 0, 0, 0, 0, 66, 66, 66, 66, 70, 58, 0, 0}}, /* 117 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 33, 33, 17, 18, 10, 12, 4, 0, 0}}, /* 118 */
|
{0, 11, {0, 0, 0, 0, 0, 68, 68, 68, 40, 40, 16, 0, 0}}, /* 118 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 37, 37, 37, 63, 18, 18, 18, 0, 0}}, /* 119 */
|
{0, 11, {0, 0, 0, 0, 0, 68, 68, 84, 84, 84, 40, 0, 0}}, /* 119 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 33, 33, 18, 12, 18, 33, 33, 0, 0}}, /* 120 */
|
{0, 11, {0, 0, 0, 0, 0, 66, 36, 24, 24, 36, 66, 0, 0}}, /* 120 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 33, 33, 17, 18, 10, 14, 4, 36, 24}}, /* 121 */
|
{0, 11, {0, 0, 0, 0, 0, 66, 66, 66, 70, 58, 2, 66, 60}}, /* 121 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 63, 2, 4, 8, 8, 16, 63, 0, 0}}, /* 122 */
|
{0, 11, {0, 0, 0, 0, 0, 126, 4, 8, 16, 32, 126, 0, 0}}, /* 122 */
|
||||||
{0, 12, {0, 3, 4, 4, 4, 4, 4, 8, 4, 4, 4, 4, 4, 3}}, /* 123 */
|
{0, 11, {0, 0, 14, 16, 16, 8, 48, 8, 16, 16, 14, 0, 0}}, /* 123 */
|
||||||
{0, 12, {0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}}, /* 124 */
|
{0, 11, {0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0}}, /* 124 */
|
||||||
{0, 12, {0, 48, 8, 8, 8, 8, 8, 4, 8, 8, 8, 8, 8, 48}}, /* 125 */
|
{0, 11, {0, 0, 56, 4, 4, 8, 6, 8, 4, 4, 56, 0, 0}}, /* 125 */
|
||||||
{0, 12, {0, 16, 41, 37, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 126 */
|
{0, 11, {0, 0, 18, 42, 36, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 126 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 127 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 127 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 128 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 128 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 129 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 129 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 130 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 130 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 131 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 131 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 132 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 132 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 133 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 133 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 134 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 134 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 135 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 135 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 136 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 136 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 137 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 137 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 138 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 138 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 139 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 139 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 140 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 140 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 141 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 141 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 142 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 142 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 143 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 143 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 144 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 144 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 145 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 145 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 146 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 146 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 147 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 147 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 148 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 148 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 149 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 149 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 150 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 150 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 151 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 151 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 152 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 152 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 153 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 153 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 154 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 154 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 155 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 155 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 156 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 156 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 157 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 157 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 158 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 158 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 159 */
|
{0, 11, {0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0}}, /* 159 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 160 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 160 */
|
||||||
{0, 12, {0, 0, 8, 8, 0, 8, 8, 8, 8, 8, 8, 8, 0, 0}}, /* 161 */
|
{0, 11, {0, 0, 8, 0, 8, 8, 8, 8, 8, 8, 8, 0, 0}}, /* 161 */
|
||||||
{0, 12, {0, 0, 0, 0, 8, 31, 41, 40, 40, 40, 41, 31, 8, 0}}, /* 162 */
|
{0, 11, {0, 0, 8, 28, 42, 40, 40, 42, 28, 8, 0, 0, 0}}, /* 162 */
|
||||||
{0, 12, {0, 0, 0, 12, 18, 16, 16, 60, 16, 16, 60, 18, 0, 0}}, /* 163 */
|
{0, 11, {0, 0, 28, 34, 32, 32, 112, 32, 32, 34, 92, 0, 0}}, /* 163 */
|
||||||
{0, 12, {0, 0, 0, 0, 33, 30, 18, 18, 30, 33, 0, 0, 0, 0}}, /* 164 */
|
{0, 11, {0, 0, 0, 0, 66, 60, 36, 36, 60, 66, 0, 0, 0}}, /* 164 */
|
||||||
{0, 12, {0, 0, 33, 18, 12, 63, 4, 4, 63, 4, 4, 4, 0, 0}}, /* 165 */
|
{0, 11, {0, 0, 68, 68, 40, 40, 124, 16, 124, 16, 16, 0, 0}}, /* 165 */
|
||||||
{0, 12, {0, 0, 8, 8, 8, 8, 0, 0, 8, 8, 8, 8, 0, 0}}, /* 166 */
|
{0, 11, {0, 0, 8, 8, 8, 8, 0, 8, 8, 8, 8, 0, 0}}, /* 166 */
|
||||||
{0, 12, {0, 30, 33, 16, 12, 18, 33, 18, 12, 2, 33, 30, 0, 0}}, /* 167 */
|
{0, 11, {0, 24, 36, 32, 24, 36, 36, 24, 4, 36, 24, 0, 0}}, /* 167 */
|
||||||
{0, 12, {0, 36, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 168 */
|
{0, 11, {0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 168 */
|
||||||
{0, 12, {0, 30, 33, 45, 51, 49, 49, 49, 51, 45, 33, 30, 0, 0}}, /* 169 */
|
{0, 11, {0, 60, 66, 90, 82, 82, 82, 90, 66, 60, 0, 0, 0}}, /* 169 */
|
||||||
{0, 12, {0, 14, 17, 15, 17, 19, 13, 0, 31, 0, 0, 0, 0, 0}}, /* 170 */
|
{0, 11, {0, 0, 28, 2, 30, 34, 30, 0, 62, 0, 0, 0, 0}}, /* 170 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 5, 10, 20, 40, 20, 10, 5, 0, 0}}, /* 171 */
|
{0, 11, {0, 0, 0, 10, 20, 40, 80, 40, 20, 10, 0, 0, 0}}, /* 171 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 124, 4, 4, 4, 0, 0}}, /* 172 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 62, 2, 2, 0, 0, 0, 0}}, /* 172 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 0, 0}}, /* 173 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0}}, /* 173 */
|
||||||
{0, 12, {0, 30, 33, 61, 51, 51, 61, 51, 51, 51, 33, 30, 0, 0}}, /* 174 */
|
{0, 11, {0, 60, 66, 90, 86, 86, 90, 86, 66, 60, 0, 0, 0}}, /* 174 */
|
||||||
{0, 12, {0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 175 */
|
{0, 11, {0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 175 */
|
||||||
{0, 12, {0, 24, 36, 36, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 176 */
|
{0, 11, {0, 0, 24, 36, 36, 24, 0, 0, 0, 0, 0, 0, 0}}, /* 176 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 8, 8, 62, 8, 8, 62, 0, 0}}, /* 177 */
|
{0, 11, {0, 0, 0, 8, 8, 62, 8, 8, 0, 62, 0, 0, 0}}, /* 177 */
|
||||||
{0, 12, {0, 24, 36, 4, 8, 16, 32, 60, 0, 0, 0, 0, 0, 0}}, /* 178 */
|
{0, 11, {0, 32, 80, 16, 32, 64, 112, 0, 0, 0, 0, 0, 0}}, /* 178 */
|
||||||
{0, 12, {0, 24, 36, 4, 24, 4, 36, 24, 0, 0, 0, 0, 0, 0}}, /* 179 */
|
{0, 11, {0, 112, 16, 32, 16, 80, 32, 0, 0, 0, 0, 0, 0}}, /* 179 */
|
||||||
{0, 12, {0, 4, 8, 16, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 180 */
|
{0, 11, {0, 8, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 180 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 34, 34, 34, 34, 54, 42, 32, 32}}, /* 181 */
|
{0, 11, {0, 0, 0, 0, 0, 66, 66, 66, 66, 102, 90, 64, 0}}, /* 181 */
|
||||||
{0, 12, {0, 0, 30, 42, 42, 42, 42, 26, 10, 10, 10, 10, 10, 14}}, /* 182 */
|
{0, 11, {0, 0, 62, 116, 116, 116, 52, 20, 20, 20, 20, 0, 0}}, /* 182 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0}}, /* 183 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0}}, /* 183 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 16}}, /* 184 */
|
{0, 11, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 16}}, /* 184 */
|
||||||
{0, 12, {0, 0, 16, 48, 16, 16, 16, 16, 0, 0, 0, 0, 0, 0}}, /* 185 */
|
{0, 11, {0, 32, 96, 32, 32, 32, 112, 0, 0, 0, 0, 0, 0}}, /* 185 */
|
||||||
{0, 12, {0, 0, 12, 18, 18, 12, 0, 30, 0, 0, 0, 0, 0, 0}}, /* 186 */
|
{0, 11, {0, 0, 24, 36, 36, 24, 0, 60, 0, 0, 0, 0, 0}}, /* 186 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 40, 20, 10, 5, 10, 20, 40, 0, 0}}, /* 187 */
|
{0, 11, {0, 0, 0, 80, 40, 20, 10, 20, 40, 80, 0, 0, 0}}, /* 187 */
|
||||||
{0, 12, {0, 0, 16, 49, 18, 18, 20, 9, 11, 21, 39, 33, 0, 0}}, /* 188 */
|
{0, 11, {0, 32, 96, 32, 32, 34, 118, 10, 10, 14, 2, 0, 0}}, /* 188 */
|
||||||
{0, 12, {0, 0, 16, 49, 18, 18, 20, 10, 13, 17, 34, 39, 0, 0}}, /* 189 */
|
{0, 11, {0, 32, 96, 32, 32, 36, 122, 2, 4, 8, 14, 0, 0}}, /* 189 */
|
||||||
{0, 12, {0, 0, 49, 9, 18, 12, 52, 9, 19, 21, 39, 1, 0, 0}}, /* 190 */
|
{0, 11, {0, 112, 16, 32, 16, 82, 38, 10, 10, 14, 2, 0, 0}}, /* 190 */
|
||||||
{0, 12, {0, 0, 0, 4, 4, 0, 4, 4, 4, 4, 2, 33, 33, 30}}, /* 191 */
|
{0, 11, {0, 0, 16, 0, 16, 16, 32, 64, 66, 66, 60, 0, 0}}, /* 191 */
|
||||||
{0, 12, {16, 12, 0, 12, 20, 18, 34, 33, 63, 33, 33, 33, 0, 0}}, /* 192 */
|
{0, 11, {0, 16, 8, 0, 24, 36, 66, 66, 126, 66, 66, 0, 0}}, /* 192 */
|
||||||
{0, 12, {2, 12, 0, 12, 20, 18, 34, 33, 63, 33, 33, 33, 0, 0}}, /* 193 */
|
{0, 11, {0, 8, 16, 0, 24, 36, 66, 66, 126, 66, 66, 0, 0}}, /* 193 */
|
||||||
{0, 12, {12, 18, 0, 12, 20, 18, 34, 33, 63, 33, 33, 33, 0, 0}}, /* 194 */
|
{0, 11, {0, 24, 36, 0, 24, 36, 66, 66, 126, 66, 66, 0, 0}}, /* 194 */
|
||||||
{0, 12, {10, 20, 0, 12, 20, 18, 34, 33, 63, 33, 33, 33, 0, 0}}, /* 195 */
|
{0, 11, {0, 20, 40, 0, 24, 36, 66, 66, 126, 66, 66, 0, 0}}, /* 195 */
|
||||||
{0, 12, {0, 18, 0, 12, 20, 18, 34, 33, 63, 33, 33, 33, 0, 0}}, /* 196 */
|
{0, 11, {0, 36, 36, 0, 24, 36, 66, 66, 126, 66, 66, 0, 0}}, /* 196 */
|
||||||
{0, 12, {8, 0, 8, 12, 20, 18, 34, 33, 63, 33, 33, 33, 0, 0}}, /* 197 */
|
{0, 11, {0, 24, 36, 24, 24, 36, 66, 66, 126, 66, 66, 0, 0}}, /* 197 */
|
||||||
{0, 12, {0, 0, 31, 40, 40, 40, 78, 120, 72, 72, 72, 79, 0, 0}}, /* 198 */
|
{0, 11, {0, 0, 46, 80, 80, 80, 92, 112, 80, 80, 94, 0, 0}}, /* 198 */
|
||||||
{0, 12, {0, 0, 30, 33, 33, 32, 32, 32, 32, 33, 33, 30, 4, 8}}, /* 199 */
|
{0, 11, {0, 0, 60, 66, 64, 64, 64, 64, 64, 66, 60, 8, 16}}, /* 199 */
|
||||||
{0, 12, {16, 12, 0, 63, 32, 32, 32, 62, 32, 32, 32, 63, 0, 0}}, /* 200 */
|
{0, 11, {0, 16, 8, 0, 126, 64, 64, 120, 64, 64, 126, 0, 0}}, /* 200 */
|
||||||
{0, 12, {2, 12, 0, 63, 32, 32, 32, 62, 32, 32, 32, 63, 0, 0}}, /* 201 */
|
{0, 11, {0, 8, 16, 0, 126, 64, 64, 120, 64, 64, 126, 0, 0}}, /* 201 */
|
||||||
{0, 12, {12, 18, 0, 63, 32, 32, 32, 62, 32, 32, 32, 63, 0, 0}}, /* 202 */
|
{0, 11, {0, 24, 36, 0, 126, 64, 64, 120, 64, 64, 126, 0, 0}}, /* 202 */
|
||||||
{0, 12, {0, 18, 0, 63, 32, 32, 32, 62, 32, 32, 32, 63, 0, 0}}, /* 203 */
|
{0, 11, {0, 36, 36, 0, 126, 64, 64, 120, 64, 64, 126, 0, 0}}, /* 203 */
|
||||||
{0, 12, {8, 6, 0, 31, 4, 4, 4, 4, 4, 4, 4, 31, 0, 0}}, /* 204 */
|
{0, 11, {0, 16, 8, 0, 62, 8, 8, 8, 8, 8, 62, 0, 0}}, /* 204 */
|
||||||
{0, 12, {2, 12, 0, 31, 4, 4, 4, 4, 4, 4, 4, 31, 0, 0}}, /* 205 */
|
{0, 11, {0, 8, 16, 0, 62, 8, 8, 8, 8, 8, 62, 0, 0}}, /* 205 */
|
||||||
{0, 12, {4, 10, 0, 31, 4, 4, 4, 4, 4, 4, 4, 31, 0, 0}}, /* 206 */
|
{0, 11, {0, 24, 36, 0, 62, 8, 8, 8, 8, 8, 62, 0, 0}}, /* 206 */
|
||||||
{0, 12, {0, 10, 0, 31, 4, 4, 4, 4, 4, 4, 4, 31, 0, 0}}, /* 207 */
|
{0, 11, {0, 20, 20, 0, 62, 8, 8, 8, 8, 8, 62, 0, 0}}, /* 207 */
|
||||||
{0, 12, {0, 0, 60, 34, 33, 33, 113, 33, 33, 33, 34, 60, 0, 0}}, /* 208 */
|
{0, 11, {0, 0, 124, 34, 34, 34, 114, 34, 34, 34, 124, 0, 0}}, /* 208 */
|
||||||
{0, 12, {10, 20, 0, 49, 41, 41, 41, 37, 37, 37, 35, 35, 0, 0}}, /* 209 */
|
{0, 11, {0, 20, 40, 0, 66, 98, 82, 82, 74, 70, 66, 0, 0}}, /* 209 */
|
||||||
{0, 12, {16, 12, 0, 30, 33, 33, 33, 33, 33, 33, 33, 30, 0, 0}}, /* 210 */
|
{0, 11, {0, 16, 8, 0, 60, 66, 66, 66, 66, 66, 60, 0, 0}}, /* 210 */
|
||||||
{0, 12, {2, 12, 0, 30, 33, 33, 33, 33, 33, 33, 33, 30, 0, 0}}, /* 211 */
|
{0, 11, {0, 8, 16, 0, 60, 66, 66, 66, 66, 66, 60, 0, 0}}, /* 211 */
|
||||||
{0, 12, {12, 18, 0, 30, 33, 33, 33, 33, 33, 33, 33, 30, 0, 0}}, /* 212 */
|
{0, 11, {0, 24, 36, 0, 60, 66, 66, 66, 66, 66, 60, 0, 0}}, /* 212 */
|
||||||
{0, 12, {10, 20, 0, 30, 33, 33, 33, 33, 33, 33, 33, 30, 0, 0}}, /* 213 */
|
{0, 11, {0, 20, 40, 0, 60, 66, 66, 66, 66, 66, 60, 0, 0}}, /* 213 */
|
||||||
{0, 12, {0, 18, 0, 30, 33, 33, 33, 33, 33, 33, 33, 30, 0, 0}}, /* 214 */
|
{0, 11, {0, 36, 36, 0, 60, 66, 66, 66, 66, 66, 60, 0, 0}}, /* 214 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 65, 34, 20, 8, 20, 34, 65, 0, 0}}, /* 215 */
|
{0, 11, {0, 0, 0, 0, 66, 36, 24, 24, 36, 66, 0, 0, 0}}, /* 215 */
|
||||||
{0, 12, {1, 1, 30, 35, 37, 37, 37, 41, 41, 41, 49, 30, 32, 32}}, /* 216 */
|
{0, 11, {0, 2, 60, 70, 74, 74, 82, 82, 82, 98, 60, 64, 0}}, /* 216 */
|
||||||
{0, 12, {16, 12, 0, 33, 33, 33, 33, 33, 33, 33, 33, 30, 0, 0}}, /* 217 */
|
{0, 11, {0, 16, 8, 0, 66, 66, 66, 66, 66, 66, 60, 0, 0}}, /* 217 */
|
||||||
{0, 12, {2, 12, 0, 33, 33, 33, 33, 33, 33, 33, 33, 30, 0, 0}}, /* 218 */
|
{0, 11, {0, 8, 16, 0, 66, 66, 66, 66, 66, 66, 60, 0, 0}}, /* 218 */
|
||||||
{0, 12, {12, 18, 0, 33, 33, 33, 33, 33, 33, 33, 33, 30, 0, 0}}, /* 219 */
|
{0, 11, {0, 24, 36, 0, 66, 66, 66, 66, 66, 66, 60, 0, 0}}, /* 219 */
|
||||||
{0, 12, {0, 18, 0, 33, 33, 33, 33, 33, 33, 33, 33, 30, 0, 0}}, /* 220 */
|
{0, 11, {0, 36, 36, 0, 66, 66, 66, 66, 66, 66, 60, 0, 0}}, /* 220 */
|
||||||
{0, 12, {2, 12, 33, 33, 34, 18, 20, 12, 8, 8, 8, 8, 0, 0}}, /* 221 */
|
{0, 11, {0, 8, 16, 0, 34, 34, 20, 8, 8, 8, 8, 0, 0}}, /* 221 */
|
||||||
{0, 12, {0, 0, 32, 32, 62, 33, 33, 33, 33, 62, 32, 32, 0, 0}}, /* 222 */
|
{0, 11, {0, 0, 64, 124, 66, 66, 66, 124, 64, 64, 64, 0, 0}}, /* 222 */
|
||||||
{0, 12, {0, 0, 12, 18, 18, 18, 28, 18, 17, 17, 17, 62, 0, 0}}, /* 223 */
|
{0, 11, {0, 0, 0, 60, 66, 66, 124, 66, 66, 98, 92, 64, 0}}, /* 223 */
|
||||||
{0, 12, {0, 16, 8, 4, 0, 30, 33, 7, 25, 33, 35, 29, 0, 0}}, /* 224 */
|
{0, 11, {0, 16, 8, 0, 0, 60, 2, 62, 66, 70, 58, 0, 0}}, /* 224 */
|
||||||
{0, 12, {0, 2, 4, 8, 0, 30, 33, 7, 25, 33, 35, 29, 0, 0}}, /* 225 */
|
{0, 11, {0, 8, 16, 0, 0, 60, 2, 62, 66, 70, 58, 0, 0}}, /* 225 */
|
||||||
{0, 12, {0, 0, 12, 18, 0, 30, 33, 7, 25, 33, 35, 29, 0, 0}}, /* 226 */
|
{0, 11, {0, 24, 36, 0, 0, 60, 2, 62, 66, 70, 58, 0, 0}}, /* 226 */
|
||||||
{0, 12, {0, 0, 10, 20, 0, 30, 33, 7, 25, 33, 35, 29, 0, 0}}, /* 227 */
|
{0, 11, {0, 20, 40, 0, 0, 60, 2, 62, 66, 70, 58, 0, 0}}, /* 227 */
|
||||||
{0, 12, {0, 0, 0, 18, 0, 30, 33, 7, 25, 33, 35, 29, 0, 0}}, /* 228 */
|
{0, 11, {0, 36, 36, 0, 0, 60, 2, 62, 66, 70, 58, 0, 0}}, /* 228 */
|
||||||
{0, 12, {0, 8, 20, 8, 0, 30, 33, 7, 25, 33, 35, 29, 0, 0}}, /* 229 */
|
{0, 11, {0, 24, 36, 24, 0, 60, 2, 62, 66, 70, 58, 0, 0}}, /* 229 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 62, 73, 25, 47, 72, 73, 62, 0, 0}}, /* 230 */
|
{0, 11, {0, 0, 0, 0, 0, 52, 10, 62, 72, 74, 52, 0, 0}}, /* 230 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 30, 33, 32, 32, 32, 33, 30, 4, 8}}, /* 231 */
|
{0, 11, {0, 0, 0, 0, 0, 60, 66, 64, 64, 66, 60, 8, 16}}, /* 231 */
|
||||||
{0, 12, {0, 16, 8, 4, 0, 30, 33, 33, 63, 32, 33, 30, 0, 0}}, /* 232 */
|
{0, 11, {0, 16, 8, 0, 0, 60, 66, 126, 64, 66, 60, 0, 0}}, /* 232 */
|
||||||
{0, 12, {0, 2, 4, 8, 0, 30, 33, 33, 63, 32, 33, 30, 0, 0}}, /* 233 */
|
{0, 11, {0, 8, 16, 0, 0, 60, 66, 126, 64, 66, 60, 0, 0}}, /* 233 */
|
||||||
{0, 12, {0, 0, 12, 18, 0, 30, 33, 33, 63, 32, 33, 30, 0, 0}}, /* 234 */
|
{0, 11, {0, 24, 36, 0, 0, 60, 66, 126, 64, 66, 60, 0, 0}}, /* 234 */
|
||||||
{0, 12, {0, 0, 0, 18, 0, 30, 33, 33, 63, 32, 33, 30, 0, 0}}, /* 235 */
|
{0, 11, {0, 36, 36, 0, 0, 60, 66, 126, 64, 66, 60, 0, 0}}, /* 235 */
|
||||||
{0, 12, {0, 16, 8, 4, 0, 8, 8, 8, 8, 8, 8, 8, 0, 0}}, /* 236 */
|
{0, 11, {0, 16, 8, 0, 0, 24, 8, 8, 8, 8, 62, 0, 0}}, /* 236 */
|
||||||
{0, 12, {0, 4, 8, 16, 0, 8, 8, 8, 8, 8, 8, 8, 0, 0}}, /* 237 */
|
{0, 11, {0, 8, 16, 0, 0, 24, 8, 8, 8, 8, 62, 0, 0}}, /* 237 */
|
||||||
{0, 12, {0, 0, 8, 20, 0, 8, 8, 8, 8, 8, 8, 8, 0, 0}}, /* 238 */
|
{0, 11, {0, 24, 36, 0, 0, 24, 8, 8, 8, 8, 62, 0, 0}}, /* 238 */
|
||||||
{0, 12, {0, 0, 0, 20, 0, 8, 8, 8, 8, 8, 8, 8, 0, 0}}, /* 239 */
|
{0, 11, {0, 36, 36, 0, 0, 24, 8, 8, 8, 8, 62, 0, 0}}, /* 239 */
|
||||||
{0, 12, {0, 20, 8, 20, 2, 30, 34, 34, 34, 34, 34, 28, 0, 0}}, /* 240 */
|
{0, 11, {0, 36, 24, 40, 4, 60, 66, 66, 66, 66, 60, 0, 0}}, /* 240 */
|
||||||
{0, 12, {0, 0, 10, 20, 0, 46, 49, 33, 33, 33, 33, 33, 0, 0}}, /* 241 */
|
{0, 11, {0, 20, 40, 0, 0, 92, 98, 66, 66, 66, 66, 0, 0}}, /* 241 */
|
||||||
{0, 12, {0, 16, 8, 4, 0, 30, 33, 33, 33, 33, 33, 30, 0, 0}}, /* 242 */
|
{0, 11, {0, 16, 8, 0, 0, 60, 66, 66, 66, 66, 60, 0, 0}}, /* 242 */
|
||||||
{0, 12, {0, 2, 4, 8, 0, 30, 33, 33, 33, 33, 33, 30, 0, 0}}, /* 243 */
|
{0, 11, {0, 8, 16, 0, 0, 60, 66, 66, 66, 66, 60, 0, 0}}, /* 243 */
|
||||||
{0, 12, {0, 0, 12, 18, 0, 30, 33, 33, 33, 33, 33, 30, 0, 0}}, /* 244 */
|
{0, 11, {0, 24, 36, 0, 0, 60, 66, 66, 66, 66, 60, 0, 0}}, /* 244 */
|
||||||
{0, 12, {0, 0, 10, 20, 0, 30, 33, 33, 33, 33, 33, 30, 0, 0}}, /* 245 */
|
{0, 11, {0, 20, 40, 0, 0, 60, 66, 66, 66, 66, 60, 0, 0}}, /* 245 */
|
||||||
{0, 12, {0, 0, 0, 18, 0, 30, 33, 33, 33, 33, 33, 30, 0, 0}}, /* 246 */
|
{0, 11, {0, 36, 36, 0, 0, 60, 66, 66, 66, 66, 60, 0, 0}}, /* 246 */
|
||||||
{0, 12, {0, 0, 0, 0, 0, 0, 0, 24, 0, 126, 0, 24, 0, 0}}, /* 247 */
|
{0, 11, {0, 0, 0, 8, 8, 0, 62, 0, 8, 8, 0, 0, 0}}, /* 247 */
|
||||||
{0, 12, {0, 0, 0, 1, 2, 30, 37, 37, 41, 41, 49, 30, 32, 32}}, /* 248 */
|
{0, 11, {0, 0, 0, 0, 2, 60, 70, 74, 82, 98, 60, 64, 0}}, /* 248 */
|
||||||
{0, 12, {0, 0, 16, 8, 4, 33, 33, 33, 33, 33, 35, 29, 0, 0}}, /* 249 */
|
{0, 11, {0, 16, 8, 0, 0, 66, 66, 66, 66, 70, 58, 0, 0}}, /* 249 */
|
||||||
{0, 12, {0, 0, 2, 4, 8, 33, 33, 33, 33, 33, 35, 29, 0, 0}}, /* 250 */
|
{0, 11, {0, 8, 16, 0, 0, 66, 66, 66, 66, 70, 58, 0, 0}}, /* 250 */
|
||||||
{0, 12, {0, 0, 12, 18, 0, 33, 33, 33, 33, 33, 35, 29, 0, 0}}, /* 251 */
|
{0, 11, {0, 24, 36, 0, 0, 66, 66, 66, 66, 70, 58, 0, 0}}, /* 251 */
|
||||||
{0, 12, {0, 0, 0, 18, 0, 33, 33, 33, 33, 33, 35, 29, 0, 0}}, /* 252 */
|
{0, 11, {0, 36, 36, 0, 0, 66, 66, 66, 66, 70, 58, 0, 0}}, /* 252 */
|
||||||
{0, 12, {0, 0, 2, 4, 8, 33, 33, 17, 18, 10, 14, 4, 36, 24}}, /* 253 */
|
{0, 11, {0, 8, 16, 0, 0, 66, 66, 66, 70, 58, 2, 66, 60}}, /* 253 */
|
||||||
{0, 12, {0, 0, 32, 32, 32, 46, 49, 33, 33, 33, 49, 46, 32, 32}}, /* 254 */
|
{0, 11, {0, 0, 0, 64, 64, 92, 98, 66, 66, 98, 92, 64, 64}}, /* 254 */
|
||||||
{0, 12, {0, 0, 0, 18, 0, 33, 33, 17, 18, 10, 14, 4, 36, 24}} /* 255 */
|
{0, 11, {0, 36, 36, 0, 0, 66, 66, 66, 70, 58, 2, 66, 60}} /* 255 */
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ void (*MwFLFontFree)(void* handle) = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define FontWidth 7
|
#define FontWidth 7
|
||||||
#define FontHeight 14
|
#define FontHeight 13
|
||||||
|
|
||||||
static void bitmap_MwDrawText(MwWidget handle, MwPoint* point, const char* text, int bold, MwLLColor color);
|
static void bitmap_MwDrawText(MwWidget handle, MwPoint* point, const char* text, int bold, MwLLColor color);
|
||||||
|
|
||||||
|
|
@ -240,7 +240,7 @@ int MwTextHeight(MwWidget handle, MwFLFont ttf, const char* text) {
|
||||||
|
|
||||||
void* MwFontLoad(unsigned char* data, unsigned int size) {
|
void* MwFontLoad(unsigned char* data, unsigned int size) {
|
||||||
if(MwFLFontLoad)
|
if(MwFLFontLoad)
|
||||||
return MwFLFontLoad(data, size, 14);
|
return MwFLFontLoad(data, size, 13);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
387
src/widget/chart.c
Normal file
387
src/widget/chart.c
Normal file
|
|
@ -0,0 +1,387 @@
|
||||||
|
#include <Mw/Milsko.h>
|
||||||
|
|
||||||
|
#include "../../external/stb_ds.h"
|
||||||
|
|
||||||
|
static const char* palette0[] = {
|
||||||
|
"#800",
|
||||||
|
"#080",
|
||||||
|
"#880",
|
||||||
|
"#008",
|
||||||
|
"#808",
|
||||||
|
"#088",
|
||||||
|
"#888",
|
||||||
|
NULL};
|
||||||
|
|
||||||
|
#define NUMFMT "%.2f"
|
||||||
|
#define PIE_DIV 4
|
||||||
|
|
||||||
|
static int wcreate(MwWidget handle) {
|
||||||
|
MwChart c = malloc(sizeof(*c));
|
||||||
|
memset(c, 0, sizeof(*c));
|
||||||
|
|
||||||
|
handle->internal = c;
|
||||||
|
|
||||||
|
MwSetDefault(handle);
|
||||||
|
|
||||||
|
MwSetInteger(handle, MwNtype, MwCHART_BAR);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void destroy(MwWidget handle) {
|
||||||
|
MwChartReset(handle);
|
||||||
|
free(handle->internal);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void draw_line(MwWidget handle, const char* text, double x, double y, double width, double height, MwLLColor color) {
|
||||||
|
MwPoint p[2];
|
||||||
|
int type = MwGetInteger(handle, MwNtype);
|
||||||
|
|
||||||
|
p[0].x = x;
|
||||||
|
p[0].y = y;
|
||||||
|
|
||||||
|
p[1].x = x + width;
|
||||||
|
p[1].y = p[0].y;
|
||||||
|
MwDrawText(handle, NULL, p, text, MwALIGNMENT_END, color);
|
||||||
|
|
||||||
|
if(type == MwCHART_3D_BAR) {
|
||||||
|
MwPoint p2[2];
|
||||||
|
|
||||||
|
p2[0] = p[0];
|
||||||
|
p2[1] = p[0];
|
||||||
|
|
||||||
|
p2[1].x += height;
|
||||||
|
p2[1].y -= height;
|
||||||
|
|
||||||
|
MwLLLine(handle->lowlevel, &p2[0], color);
|
||||||
|
|
||||||
|
p[0].x += height;
|
||||||
|
p[0].y -= height;
|
||||||
|
p[1].y -= height;
|
||||||
|
}
|
||||||
|
MwLLLine(handle->lowlevel, &p[0], color);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void draw(MwWidget handle) {
|
||||||
|
MwLLColor base = MwParseColor(handle, MwGetText(handle, MwNbackground));
|
||||||
|
MwLLColor border = MwParseColor(handle, MwGetText(handle, MwNforeground));
|
||||||
|
MwRect r;
|
||||||
|
MwChart c = handle->internal;
|
||||||
|
int i;
|
||||||
|
const char** colors = palette0;
|
||||||
|
int n;
|
||||||
|
int gap;
|
||||||
|
int width;
|
||||||
|
MwRect node;
|
||||||
|
double vmin = 0xffffffff;
|
||||||
|
double vmax = -0xffffffff;
|
||||||
|
int space = MwTextHeight(handle, NULL, "M");
|
||||||
|
MwPoint p[2];
|
||||||
|
int type = MwGetInteger(handle, MwNtype);
|
||||||
|
|
||||||
|
for(n = 0; colors[n] != NULL; n++);
|
||||||
|
|
||||||
|
for(i = 0; i < arrlen(c->entries); i++) {
|
||||||
|
if(vmin > c->entries[i].value) vmin = c->entries[i].value;
|
||||||
|
if(vmax < c->entries[i].value) vmax = c->entries[i].value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(MwGetInteger(handle, MwNminValue) != MwDEFAULT) vmin = MwGetInteger(handle, MwNminValue);
|
||||||
|
if(MwGetInteger(handle, MwNmaxValue) != MwDEFAULT) vmax = MwGetInteger(handle, MwNmaxValue);
|
||||||
|
|
||||||
|
r.x = 0;
|
||||||
|
r.y = 0;
|
||||||
|
r.width = MwGetInteger(handle, MwNwidth);
|
||||||
|
r.height = MwGetInteger(handle, MwNheight);
|
||||||
|
MwDrawRect(handle, &r, base);
|
||||||
|
|
||||||
|
if(type == MwCHART_BAR || type == MwCHART_3D_BAR) {
|
||||||
|
double s = 1.5;
|
||||||
|
double ovmin = vmin;
|
||||||
|
double ovmax = vmax;
|
||||||
|
double twidth;
|
||||||
|
char buf[128];
|
||||||
|
|
||||||
|
node.x = 0;
|
||||||
|
|
||||||
|
for(i = 0; i < arrlen(c->entries); i++) {
|
||||||
|
int w;
|
||||||
|
|
||||||
|
sprintf(buf, NUMFMT, c->entries[i].value);
|
||||||
|
|
||||||
|
w = MwTextWidth(handle, NULL, buf);
|
||||||
|
|
||||||
|
if(node.x < w) node.x = w;
|
||||||
|
}
|
||||||
|
|
||||||
|
node.y = 0;
|
||||||
|
|
||||||
|
width = (r.width - node.x) * s / (arrlen(c->entries) * (1 + s) + 1);
|
||||||
|
gap = width / s;
|
||||||
|
|
||||||
|
twidth = (width + gap) * arrlen(c->entries) + gap;
|
||||||
|
|
||||||
|
if(vmin > 0) {
|
||||||
|
vmin = 0;
|
||||||
|
} else if(vmin < 0) {
|
||||||
|
vmin -= (double)width / r.height * (vmax - vmin);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(vmax < 0) {
|
||||||
|
vmax = 0;
|
||||||
|
} else if(vmax > 0) {
|
||||||
|
vmax += (double)width / r.height * (vmax - vmin);
|
||||||
|
}
|
||||||
|
|
||||||
|
sprintf(buf, NUMFMT, ovmax);
|
||||||
|
draw_line(handle, buf, node.x, (r.height - space) - (ovmax - vmin) / (vmax - vmin) * (r.height - space), twidth, width / 2, border);
|
||||||
|
|
||||||
|
draw_line(handle, "0", node.x, (r.height - space) - (0 - vmin) / (vmax - vmin) * (r.height - space), twidth, width / 2, border);
|
||||||
|
|
||||||
|
sprintf(buf, NUMFMT, ovmin);
|
||||||
|
draw_line(handle, buf, node.x, (r.height - space) - (ovmin - vmin) / (vmax - vmin) * (r.height - space), twidth, width / 2, border);
|
||||||
|
|
||||||
|
p[0].x = node.x;
|
||||||
|
p[0].y = 0;
|
||||||
|
|
||||||
|
p[1].x = node.x;
|
||||||
|
p[1].y = r.height - space;
|
||||||
|
MwLLLine(handle->lowlevel, &p[0], border);
|
||||||
|
|
||||||
|
p[0].x = node.x;
|
||||||
|
p[0].y = r.height - space;
|
||||||
|
|
||||||
|
p[1].x = node.x + twidth;
|
||||||
|
p[1].y = p[0].y;
|
||||||
|
MwLLLine(handle->lowlevel, &p[0], border);
|
||||||
|
|
||||||
|
node.width = width;
|
||||||
|
for(i = 0; i < arrlen(c->entries); i++) {
|
||||||
|
int ColorDiff = MwGetColorDifference(handle);
|
||||||
|
MwLLColor color = MwParseColor(handle, c->entries[i].color == NULL ? colors[i % n] : c->entries[i].color);
|
||||||
|
MwLLColor colorl = MwLightenColor(handle, color, ColorDiff, ColorDiff, ColorDiff);
|
||||||
|
MwLLColor colord = MwLightenColor(handle, color, -ColorDiff, -ColorDiff, -ColorDiff);
|
||||||
|
MwPoint persp_top[5];
|
||||||
|
MwPoint persp_right[5];
|
||||||
|
|
||||||
|
node.x += gap;
|
||||||
|
|
||||||
|
node.height = -c->entries[i].value / (vmax - vmin) * (r.height - space);
|
||||||
|
node.y = (r.height - space) - (0 - vmin) / (vmax - vmin) * (r.height - space);
|
||||||
|
|
||||||
|
MwDrawRect(handle, &node, color);
|
||||||
|
|
||||||
|
if(type == MwCHART_3D_BAR) {
|
||||||
|
MwRect node2 = node;
|
||||||
|
|
||||||
|
MwFixRect(&node2);
|
||||||
|
|
||||||
|
persp_top[0] = *(MwPoint*)&node2;
|
||||||
|
persp_top[1] = *(MwPoint*)&node2;
|
||||||
|
persp_top[1].x += node2.width;
|
||||||
|
|
||||||
|
persp_top[2] = persp_top[1];
|
||||||
|
persp_top[3] = persp_top[0];
|
||||||
|
|
||||||
|
persp_top[2].x += node2.width / 2;
|
||||||
|
persp_top[2].y -= node2.width / 2;
|
||||||
|
|
||||||
|
persp_top[3].x += node2.width / 2;
|
||||||
|
persp_top[3].y -= node2.width / 2;
|
||||||
|
|
||||||
|
persp_top[4] = persp_top[0];
|
||||||
|
|
||||||
|
MwLLPolygon(handle->lowlevel, persp_top, 4, colorl);
|
||||||
|
|
||||||
|
persp_right[0] = *(MwPoint*)&node2;
|
||||||
|
persp_right[1] = *(MwPoint*)&node2;
|
||||||
|
persp_right[0].x += node2.width;
|
||||||
|
persp_right[1].x += node2.width;
|
||||||
|
persp_right[1].y += node2.height;
|
||||||
|
|
||||||
|
persp_right[2] = persp_right[1];
|
||||||
|
persp_right[3] = persp_right[0];
|
||||||
|
|
||||||
|
persp_right[2].x += node2.width / 2;
|
||||||
|
persp_right[2].y -= node2.width / 2;
|
||||||
|
|
||||||
|
persp_right[3].x += node2.width / 2;
|
||||||
|
persp_right[3].y -= node2.width / 2;
|
||||||
|
|
||||||
|
persp_right[4] = persp_right[0];
|
||||||
|
|
||||||
|
MwLLPolygon(handle->lowlevel, persp_right, 4, colord);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!MwGetInteger(handle, MwNmodernLook)) {
|
||||||
|
MwDrawRectLine(handle, &node, border);
|
||||||
|
|
||||||
|
if(type == MwCHART_3D_BAR) {
|
||||||
|
MwLLLine(handle->lowlevel, &persp_top[0], border);
|
||||||
|
MwLLLine(handle->lowlevel, &persp_top[1], border);
|
||||||
|
MwLLLine(handle->lowlevel, &persp_top[2], border);
|
||||||
|
MwLLLine(handle->lowlevel, &persp_top[3], border);
|
||||||
|
|
||||||
|
MwLLLine(handle->lowlevel, &persp_right[0], border);
|
||||||
|
MwLLLine(handle->lowlevel, &persp_right[1], border);
|
||||||
|
MwLLLine(handle->lowlevel, &persp_right[2], border);
|
||||||
|
MwLLLine(handle->lowlevel, &persp_right[3], border);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
p[0].x = node.x + node.width / 2;
|
||||||
|
p[0].y = r.height - space / 2;
|
||||||
|
|
||||||
|
MwDrawText(handle, NULL, p, c->entries[i].name, MwALIGNMENT_CENTER, border);
|
||||||
|
|
||||||
|
node.x += node.width;
|
||||||
|
|
||||||
|
MwLLFreeColor(colord);
|
||||||
|
MwLLFreeColor(colorl);
|
||||||
|
MwLLFreeColor(color);
|
||||||
|
}
|
||||||
|
} else if(type == MwCHART_PIE) {
|
||||||
|
double sum = 0;
|
||||||
|
int radius = r.width < r.height ? r.width : r.height;
|
||||||
|
double cangle = 0;
|
||||||
|
int k;
|
||||||
|
|
||||||
|
for(i = 0; i < arrlen(c->entries); i++) {
|
||||||
|
if(c->entries[i].value > 0) sum += c->entries[i].value;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(k = 0; k < 2; k++) {
|
||||||
|
for(i = 0; i < arrlen(c->entries); i++) {
|
||||||
|
MwLLColor color;
|
||||||
|
double angle = c->entries[i].value / sum * 360;
|
||||||
|
MwPoint p[360 + 1 + 1];
|
||||||
|
int div = angle / PIE_DIV;
|
||||||
|
int j;
|
||||||
|
int count;
|
||||||
|
|
||||||
|
if(c->entries[i].value <= 0) continue;
|
||||||
|
|
||||||
|
color = MwParseColor(handle, c->entries[i].color == NULL ? colors[i % n] : c->entries[i].color);
|
||||||
|
|
||||||
|
p[0].x = r.width / 2;
|
||||||
|
p[0].y = r.height / 2;
|
||||||
|
for(j = 0; j <= div; j++) {
|
||||||
|
double a = angle / div * j;
|
||||||
|
|
||||||
|
p[div - j + 1].x = p[0].x + cos((cangle + a - 90) / 180 * M_PI) * radius / 2;
|
||||||
|
p[div - j + 1].y = p[0].y + sin((cangle + a - 90) / 180 * M_PI) * radius / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
count = j + 1;
|
||||||
|
|
||||||
|
if(k == 0) {
|
||||||
|
MwLLPolygon(handle->lowlevel, p, count, color);
|
||||||
|
} else {
|
||||||
|
int j;
|
||||||
|
|
||||||
|
p[count] = p[0];
|
||||||
|
for(j = 0; j < count; j++) {
|
||||||
|
MwLLLine(handle->lowlevel, &p[j], border);
|
||||||
|
}
|
||||||
|
|
||||||
|
p[0].x += cos((cangle + angle / 2 - 90) / 180 * M_PI) * radius / 4;
|
||||||
|
p[0].y += sin((cangle + angle / 2 - 90) / 180 * M_PI) * radius / 4;
|
||||||
|
MwDrawText(handle, NULL, p, c->entries[i].name, MwALIGNMENT_CENTER, border);
|
||||||
|
}
|
||||||
|
|
||||||
|
cangle += angle;
|
||||||
|
|
||||||
|
MwLLFreeColor(color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MwLLFreeColor(border);
|
||||||
|
MwLLFreeColor(base);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void prop_change(MwWidget handle, const char* key) {
|
||||||
|
if(strcmp(key, MwNtype) == 0) MwForceRender(handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int mwChartAddImpl(MwWidget handle, int index, const char* text, double value, const char* color) {
|
||||||
|
MwChart c = handle->internal;
|
||||||
|
MwChartEntry e;
|
||||||
|
|
||||||
|
if(index == -1) index = arrlen(c->entries);
|
||||||
|
|
||||||
|
e.name = MwStringDuplicate(text);
|
||||||
|
e.color = color == NULL ? NULL : MwStringDuplicate(color);
|
||||||
|
e.value = value;
|
||||||
|
|
||||||
|
arrins(c->entries, index, e);
|
||||||
|
|
||||||
|
MwForceRender(handle);
|
||||||
|
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void mwChartDeleteImpl(MwWidget handle, int index) {
|
||||||
|
MwChart c = handle->internal;
|
||||||
|
|
||||||
|
if(index == -1) index = arrlen(c->entries) - 1;
|
||||||
|
|
||||||
|
free(c->entries[index].name);
|
||||||
|
if(c->entries[index].color != NULL) free(c->entries[index].color);
|
||||||
|
arrdel(c->entries, index);
|
||||||
|
|
||||||
|
MwForceRender(handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void mwChartResetImpl(MwWidget handle) {
|
||||||
|
MwChart c = handle->internal;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for(i = 0; i < arrlen(c->entries); i++) {
|
||||||
|
free(c->entries[i].name);
|
||||||
|
if(c->entries[i].color != NULL) free(c->entries[i].color);
|
||||||
|
}
|
||||||
|
arrfree(c->entries);
|
||||||
|
|
||||||
|
MwForceRender(handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void func_handler(MwWidget handle, const char* name, void* out, va_list va) {
|
||||||
|
if(strcmp(name, "mwChartAdd") == 0) {
|
||||||
|
int index = va_arg(va, int);
|
||||||
|
const char* text = va_arg(va, const char*);
|
||||||
|
double value = va_arg(va, double);
|
||||||
|
const char* color = va_arg(va, const char*);
|
||||||
|
*(int*)out = mwChartAddImpl(handle, index, text, value, color);
|
||||||
|
}
|
||||||
|
if(strcmp(name, "mwChartDelete") == 0) {
|
||||||
|
int index = va_arg(va, int);
|
||||||
|
mwChartDeleteImpl(handle, index);
|
||||||
|
}
|
||||||
|
if(strcmp(name, "mwChartReset") == 0) {
|
||||||
|
mwChartResetImpl(handle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MwClassRec MwChartClassRec = {
|
||||||
|
wcreate, /* create */
|
||||||
|
destroy, /* destroy */
|
||||||
|
draw, /* draw */
|
||||||
|
NULL, /* click */
|
||||||
|
NULL, /* parent_resize */
|
||||||
|
prop_change, /* prop_change */
|
||||||
|
NULL, /* mouse_move */
|
||||||
|
NULL, /* mouse_up */
|
||||||
|
NULL, /* mouse_down */
|
||||||
|
NULL, /* key */
|
||||||
|
func_handler, /* execute */
|
||||||
|
NULL, /* tick */
|
||||||
|
MwForceRender, /* resize */
|
||||||
|
NULL, /* children_update */
|
||||||
|
NULL, /* children_prop_change */
|
||||||
|
NULL, /* clipboard */
|
||||||
|
NULL, /* props_change */
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL};
|
||||||
|
MwClass MwChartClass = &MwChartClassRec;
|
||||||
141
src/widget/clock.c
Normal file
141
src/widget/clock.c
Normal file
|
|
@ -0,0 +1,141 @@
|
||||||
|
#include <Mw/Milsko.h>
|
||||||
|
|
||||||
|
static int wcreate(MwWidget handle) {
|
||||||
|
MwSetDefault(handle);
|
||||||
|
|
||||||
|
MwSetInteger(handle, MwNhour, 0);
|
||||||
|
MwSetInteger(handle, MwNminute, 0);
|
||||||
|
MwSetInteger(handle, MwNsecond, 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void hand(MwWidget handle, double x, double y, double width, double length, double angle, MwLLColor inside, MwLLColor border) {
|
||||||
|
double w = MwGetInteger(handle, MwNwidth);
|
||||||
|
double h = MwGetInteger(handle, MwNheight);
|
||||||
|
MwPoint p[5];
|
||||||
|
int i;
|
||||||
|
double rad = (angle - 90) / 180 * M_PI;
|
||||||
|
double c = cos(rad);
|
||||||
|
double s = sin(rad);
|
||||||
|
double c2 = cos(rad - 0.5 * M_PI);
|
||||||
|
double s2 = sin(rad - 0.5 * M_PI);
|
||||||
|
double c3 = cos(rad - M_PI);
|
||||||
|
double s3 = sin(rad - M_PI);
|
||||||
|
|
||||||
|
if(width < width / 10) width = width / 10;
|
||||||
|
|
||||||
|
p[0].x = c2 * width / 2;
|
||||||
|
p[0].y = s2 * width / 2;
|
||||||
|
|
||||||
|
p[1].x = c3 * width / 2 * 2;
|
||||||
|
p[1].y = s3 * width / 2 * 2;
|
||||||
|
|
||||||
|
p[2].x = -c2 * width / 2;
|
||||||
|
p[2].y = -s2 * width / 2;
|
||||||
|
|
||||||
|
p[3].x = c * length;
|
||||||
|
p[3].y = s * length;
|
||||||
|
|
||||||
|
for(i = 0; i < 4; i++) {
|
||||||
|
p[i].x += w / 2 + x;
|
||||||
|
p[i].y += h / 2 + y;
|
||||||
|
}
|
||||||
|
|
||||||
|
p[4] = p[0];
|
||||||
|
|
||||||
|
MwLLPolygon(handle->lowlevel, p, 4, inside);
|
||||||
|
|
||||||
|
MwLLLine(handle->lowlevel, &p[0], border);
|
||||||
|
MwLLLine(handle->lowlevel, &p[1], border);
|
||||||
|
MwLLLine(handle->lowlevel, &p[2], border);
|
||||||
|
MwLLLine(handle->lowlevel, &p[3], border);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void draw(MwWidget handle) {
|
||||||
|
int ColorDiff = MwGetColorDifference(handle);
|
||||||
|
int ShadowDist;
|
||||||
|
int BaseWidth;
|
||||||
|
MwLLColor base = MwParseColor(handle, MwGetText(handle, MwNbackground));
|
||||||
|
MwLLColor shadow = MwLightenColor(handle, base, -ColorDiff, -ColorDiff, -ColorDiff);
|
||||||
|
MwLLColor inside = MwParseColor(handle, MwGetText(handle, MwNsubBackground));
|
||||||
|
MwLLColor border = MwParseColor(handle, MwGetText(handle, MwNsubForeground));
|
||||||
|
MwRect r;
|
||||||
|
int i;
|
||||||
|
double w;
|
||||||
|
double fs = (MwGetInteger(handle, MwNsecond) % 60);
|
||||||
|
double fm = (MwGetInteger(handle, MwNminute) % 60) + (MwGetInteger(handle, MwNsecond) % 60) / 60.0;
|
||||||
|
double s = (double)(MwGetInteger(handle, MwNsecond) % 60) / 60 * 360;
|
||||||
|
double m = ((double)(MwGetInteger(handle, MwNminute) % 60) + fs / 60.0) / 60 * 360;
|
||||||
|
double h = ((double)(MwGetInteger(handle, MwNhour) % 12) + fm / 60.0) / 12 * 360;
|
||||||
|
|
||||||
|
r.x = 0;
|
||||||
|
r.y = 0;
|
||||||
|
r.width = MwGetInteger(handle, MwNwidth);
|
||||||
|
r.height = MwGetInteger(handle, MwNheight);
|
||||||
|
MwDrawRect(handle, &r, base);
|
||||||
|
|
||||||
|
w = r.width < r.height ? r.width : r.height;
|
||||||
|
|
||||||
|
BaseWidth = w / 10;
|
||||||
|
ShadowDist = BaseWidth / 3;
|
||||||
|
|
||||||
|
for(i = 0; i < 12; i++) {
|
||||||
|
MwPoint p[2];
|
||||||
|
double rad = i * 30 / 180.0 * M_PI;
|
||||||
|
double c = cos(rad);
|
||||||
|
double s = sin(rad);
|
||||||
|
double x, y;
|
||||||
|
double l = w / 2 / 5;
|
||||||
|
|
||||||
|
x = r.width / 2 + c * w / 2 - l * c;
|
||||||
|
y = r.height / 2 + s * w / 2 - l * s;
|
||||||
|
|
||||||
|
p[0].x = x + l * c / (i % 3 ? 2 : 1);
|
||||||
|
p[0].y = y + l * s / (i % 3 ? 2 : 1);
|
||||||
|
|
||||||
|
p[1].x = x;
|
||||||
|
p[1].y = y;
|
||||||
|
|
||||||
|
MwLLLine(handle->lowlevel, p, border);
|
||||||
|
}
|
||||||
|
|
||||||
|
hand(handle, ShadowDist, ShadowDist, BaseWidth, w / 2 * 2 / 3, h, shadow, shadow);
|
||||||
|
hand(handle, ShadowDist, ShadowDist, BaseWidth, w / 2, m, shadow, shadow);
|
||||||
|
hand(handle, ShadowDist, ShadowDist, BaseWidth / 4, w / 2, s, shadow, shadow);
|
||||||
|
|
||||||
|
hand(handle, 0, 0, w / 10, w / 2 * 2 / 3, h, inside, border);
|
||||||
|
hand(handle, 0, 0, BaseWidth, w / 2, m, inside, border);
|
||||||
|
hand(handle, 0, 0, BaseWidth / 4, w / 2, s, inside, border);
|
||||||
|
|
||||||
|
MwLLFreeColor(border);
|
||||||
|
MwLLFreeColor(inside);
|
||||||
|
MwLLFreeColor(shadow);
|
||||||
|
MwLLFreeColor(base);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void prop_change(MwWidget handle, const char* key) {
|
||||||
|
if(strcmp(key, MwNhour) == 0 || strcmp(key, MwNminute) == 0 || strcmp(key, MwNsecond) == 0) MwForceRender(handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
MwClassRec MwClockClassRec = {
|
||||||
|
wcreate, /* create */
|
||||||
|
NULL, /* destroy */
|
||||||
|
draw, /* draw */
|
||||||
|
NULL, /* click */
|
||||||
|
NULL, /* parent_resize */
|
||||||
|
prop_change, /* prop_change */
|
||||||
|
NULL, /* mouse_move */
|
||||||
|
NULL, /* mouse_up */
|
||||||
|
NULL, /* mouse_down */
|
||||||
|
NULL, /* key */
|
||||||
|
NULL, /* execute */
|
||||||
|
NULL, /* tick */
|
||||||
|
NULL, /* resize */
|
||||||
|
NULL, /* children_update */
|
||||||
|
NULL, /* children_prop_change */
|
||||||
|
NULL, /* clipboard */
|
||||||
|
NULL, /* props_change */
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL};
|
||||||
|
MwClass MwClockClass = &MwClockClassRec;
|
||||||
|
|
@ -20,12 +20,8 @@ static int wcreate(MwWidget handle) {
|
||||||
|
|
||||||
static void destroy(MwWidget handle) {
|
static void destroy(MwWidget handle) {
|
||||||
MwComboBox cb = handle->internal;
|
MwComboBox cb = handle->internal;
|
||||||
int i;
|
|
||||||
|
|
||||||
for(i = 0; i < arrlen(cb->list); i++) {
|
MwComboBoxReset(handle);
|
||||||
free(cb->list[i]);
|
|
||||||
}
|
|
||||||
arrfree(cb->list);
|
|
||||||
free(handle->internal);
|
free(handle->internal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -145,6 +141,13 @@ static void prop_change(MwWidget handle, const char* prop) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void parent_resize(MwWidget handle) {
|
||||||
|
MwComboBox cb = handle->internal;
|
||||||
|
if(cb->opened) {
|
||||||
|
click(handle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void mwComboBoxAddImpl(MwWidget handle, int index, const char* text) {
|
static void mwComboBoxAddImpl(MwWidget handle, int index, const char* text) {
|
||||||
MwComboBox cb = handle->internal;
|
MwComboBox cb = handle->internal;
|
||||||
char* t = MwStringDuplicate(text);
|
char* t = MwStringDuplicate(text);
|
||||||
|
|
@ -153,7 +156,7 @@ static void mwComboBoxAddImpl(MwWidget handle, int index, const char* text) {
|
||||||
|
|
||||||
arrins(cb->list, index, t);
|
arrins(cb->list, index, t);
|
||||||
|
|
||||||
if(index <= MwGetInteger(handle, MwNvalue)) MwForceRender(handle);
|
MwForceRender(handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char* mwComboBoxGetImpl(MwWidget handle, int index) {
|
static const char* mwComboBoxGetImpl(MwWidget handle, int index) {
|
||||||
|
|
@ -162,6 +165,29 @@ static const char* mwComboBoxGetImpl(MwWidget handle, int index) {
|
||||||
return cb->list[index];
|
return cb->list[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void mwComboBoxDeleteImpl(MwWidget handle, int index) {
|
||||||
|
MwComboBox cb = handle->internal;
|
||||||
|
int n = MwGetInteger(handle, MwNvalue);
|
||||||
|
|
||||||
|
free(cb->list[index]);
|
||||||
|
arrdel(cb->list, index);
|
||||||
|
|
||||||
|
if(index < n && n > 0) {
|
||||||
|
MwSetInteger(handle, MwNvalue, n - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
MwForceRender(handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void mwComboBoxResetImpl(MwWidget handle) {
|
||||||
|
MwComboBox cb = handle->internal;
|
||||||
|
|
||||||
|
arrfree(cb->list);
|
||||||
|
MwSetInteger(handle, MwNvalue, 0);
|
||||||
|
|
||||||
|
MwForceRender(handle);
|
||||||
|
}
|
||||||
|
|
||||||
static void func_handler(MwWidget handle, const char* name, void* out, va_list va) {
|
static void func_handler(MwWidget handle, const char* name, void* out, va_list va) {
|
||||||
if(strcmp(name, "mwComboBoxAdd") == 0) {
|
if(strcmp(name, "mwComboBoxAdd") == 0) {
|
||||||
int index = va_arg(va, int);
|
int index = va_arg(va, int);
|
||||||
|
|
@ -172,12 +198,12 @@ static void func_handler(MwWidget handle, const char* name, void* out, va_list v
|
||||||
int index = va_arg(va, int);
|
int index = va_arg(va, int);
|
||||||
*(const char**)out = mwComboBoxGetImpl(handle, index);
|
*(const char**)out = mwComboBoxGetImpl(handle, index);
|
||||||
}
|
}
|
||||||
}
|
if(strcmp(name, "mwComboBoxDelete") == 0) {
|
||||||
|
int index = va_arg(va, int);
|
||||||
static void parent_resize(MwWidget handle) {
|
mwComboBoxDeleteImpl(handle, index);
|
||||||
MwComboBox cb = handle->internal;
|
}
|
||||||
if(cb->opened) {
|
if(strcmp(name, "mwComboBoxReset") == 0) {
|
||||||
click(handle);
|
mwComboBoxResetImpl(handle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -317,6 +317,7 @@ static int wcreate(MwWidget handle) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void destroy(MwWidget handle) {
|
static void destroy(MwWidget handle) {
|
||||||
|
MwTreeViewReset(handle);
|
||||||
free(handle->internal);
|
free(handle->internal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ static void func_handler(MwWidget handle, const char* name, void* out, va_list v
|
||||||
mwWindowShouldCloseImpl(handle, out);
|
mwWindowShouldCloseImpl(handle, out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MwClassRec MwWindowClassRec = {
|
MwClassRec MwWindowClassRec = {
|
||||||
wcreate, /* create */
|
wcreate, /* create */
|
||||||
NULL, /* destroy */
|
NULL, /* destroy */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue