Re: [MSEide-MSEgui-talk] Save forms to bitmaps?
Hello Sieghard. >> Lagprogramming sent me PMs and agreed to share it with you. > Nice, it seems they are interested in some coopertion, then. >But I'm not yet clear about what "Lagprogramming" really IS or what their >gaol might be. Hum, Lagprogramming is a user of Lazarus forum who sent me, via PM, some fixes for msegui that I commited. For example: https://github.com/mse-org/mseide-msegui/commit/717a7901c4ddb9e5e09e76537c351bc9e16eeb0b For the current "save forms to bitmap" he was responding to a post about framebuffer console and mentioned msegui. After he sent me some PM about how to do it for msegui. It would be great if he jumps deeper into msegui, maybe begin to like it and then expands it. But I have to confess that I dont understand perfectly his goal. Fre;D ___ mseide-msegui-talk mailing list mseide-msegui-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mseide-msegui-talk
Re: [MSEide-MSEgui-talk] Save forms to bitmaps?
Hello Fred, you wrote on Tue, 8 Aug 2023 10:48:35 +: Oh yes, and another remark, too: the msegui graphics implementation obviously is based _heavily_ on X11 internal function for Linux and the Windows GDI functions for Windows. That might mean that an adaptation to _their_ system will either require the implementation of even the lowest level graphical primitives separately or, if they do have them done already, a full specification of the programming interface functions they provide. Plus, probabely, "some" newly to develop "glue" code. -- (Weitergabe von Adressdaten, Telefonnummern u.ä. ohne Zustimmung nicht gestattet, ebenso Zusendung von Werbung oder ähnlichem) --- Mit freundlichen Grüßen, S. Schicktanz --- ___ mseide-msegui-talk mailing list mseide-msegui-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mseide-msegui-talk
Re: [MSEide-MSEgui-talk] Save forms to bitmaps?
Hello Fred, you wrote on Tue, 8 Aug 2023 10:48:35 +: > Lagprogramming sent me PMs and agreed to share it with you. Nice, it seems they are interested in some coopertion, then. But I'm not yet clear about what "Lagprogramming" really IS or what their gaol might be. Are they trying to develop another, competing, windowing system like X11 and Wayland, even if that should only support the framebuffer console (but you mentioned windows, seemingly multiple freefloating ones), or is it meant to create a different graphical user interface, somewhat in the way of Android's, or something different entirely? (I think I really should fire up ol' firefox for some research on the stuff...) > I've read the mailing list discussion regarding saving rendered form > bitmaps and framebuffers. Maybe the following information is useful to > you. If you need a system function free backend in MSEgui you need to Well, that's quite a lot of stuff. Is that meant as something like a list of required interface functions? The "gdf_" ones then might be the names their code is built on and wants to call, while the "gui_" ones look like the list of interface functions from msegui's Windows compatibility units, notably, in the "kernel" subdirectory, mseguiintf.inc, msegui.pas and windows/mseguiintf.pas, that I identified as the most probable anchors for adaptation to some other graphical system, although they list a host of other functions as well. Did they possibly just do a "grep" on functions and procedures starting with "gui_" for this second list? I didn't compare their list of functions with those I had found, though, so I cannot really be sure they're compatible. But it WILL require quite some more information concerning the programming interface to be able to attempt a viable implementation. Also, it's by no means clear yet what their system provides and what it doesn't, i.e. what restrictions have to be observed concerning library and system service use and other things. Much work to do yet, so. -- (Weitergabe von Adressdaten, Telefonnummern u.ä. ohne Zustimmung nicht gestattet, ebenso Zusendung von Werbung oder ähnlichem) --- Mit freundlichen Grüßen, S. Schicktanz --- ___ mseide-msegui-talk mailing list mseide-msegui-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mseide-msegui-talk
Re: [MSEide-MSEgui-talk] Save forms to bitmaps?
Re-hello. In previous post, the mail was not well formated, here maybe better: This are the PMs of Lagprogramming he agreed to share: First PM: I've read the mailing list discussion regarding saving rendered form bitmaps and framebuffers. Maybe the following information is useful to you. If you need a system function free backend in MSEgui you need to implement the functions: gdifuncty = (gdf_creategc,gdf_destroygc,gdf_changegc,gdf_createpixmap, gdf_pixmaptoimage,gdf_imagetopixmap, gdf_getcanvasclass,gdf_endpaint,gdf_flush,gdf_movewindowrect, gdf_drawlines,gdf_drawlinesegments,gdf_drawellipse,gdf_drawarc, gdf_fillrect, gdf_fillellipse,gdf_fillarc,gdf_fillpolygon,{gdf_drawstring,} gdf_drawstring16, gdf_setcliporigin, gdf_createemptyregion,gdf_createrectregion,gdf_createrectsregion, gdf_destroyregion,gdf_copyregion,gdf_moveregion, gdf_regionisempty,gdf_regionclipbox, gdf_regsubrect,gdf_regsubregion, gdf_regaddrect,gdf_regaddregion,gdf_regintersectrect, gdf_regintersectregion, gdf_copyarea,gdf_getimage, gdf_fonthasglyph, gdf_getfont,gdf_getfonthighres,gdf_freefontdata, gdf_gettext16width,gdf_getchar16widths,gdf_getfontmetrics ); LCL's customdrawn initially tried to use the fcl-image package, which is distributed with FPC. At the time customdrawn developers started working, the fcl-image package was far from being complete and it didn't had implemented many routines. Even today it misses features and has bugs, but it's better than it was at that time. In order to get over these limitations of the fcl-image package, customdrawn developers added functionality to LCL units like lcl/lazregions.pas. MSEgui might have it's own fcl-image modified implementation, too. Anyway, in the future, customdrawn developers will have to improve the fcl-image package, not the LCL units. In the mentioned example the developers added a new unit for regions, instead of improving the fcl-image package to support regions. For sure they had their reasons. Instead of fcl-image you may try to use bgrabitmap. I've never used it but maybe it has offscreen 2D rendering. For sure circular must know if bgrabitmap has better functionality than fcl-image and maybe has an idea on how much work is needed to implement in bgrabitmap the missing routines needed by msegui. Second PM: This is what has to be implemented for the GUI-interface function gui_init: guierrorty; function gui_deinit: guierrorty; procedure gui_cancelshutdown; procedure GUI_DEBUGBEGIN; export; procedure GUI_DEBUGEND; export; function gui_registergdi: guierrorty; function gui_setmainthread: guierrorty; function gui_sethighrestimer(const avalue: boolean): guierrorty; function gui_grouphideminimizedwindows: boolean; function gui_postevent(event: tmseevent): guierrorty; function gui_settimer(us: longword): guierrorty; procedure gui_disconnectmaineventqueue(); procedure gui_connectmaineventqueue(); function gui_hasevent: boolean; function gui_getevent: tmseevent; function gui_escapepressed: boolean; procedure gui_resetescapepressed; function gui_createwindow(const rect: rectty; var options: internalwindowoptionsty; var awindow: windowty): guierrorty; function gui_destroywindow(var awindow: windowty): guierrorty; function gui_getrootwindow(id: winidty = 0): winidty; function gui_getparentwindow(const awindow: winidty): winidty; function gui_reparentwindow(const child: winidty; const parent: winidty; const pos: pointty): guierrorty; function gui_getchildren(const id: winidty; out children: winidarty): guierrorty; function gui_showsysdock(var awindow: windowty): guierrorty; function gui_hidesysdock(var awindow: windowty): guierrorty; function gui_docktosyswindow(var child: windowty; const akind: syswindowty): guierrorty; function gui_traymessage(var awindow: windowty; const message: msestring; out messageid: longword; const timeoutms: longword = 0): guierrorty; function gui_canceltraymessage(var awindow: windowty; const messageid: longword): guierrorty; function gui_settrayicon(var awindow: windowty; const icon,mask: pixmapty): guierrorty; function gui_settrayhint(var awindow: windowty; const hint: msestring): guierrorty; function gui_flushgdi(const synchronize: boolean = false): guierrorty; function gui_showwindow(id: winidty): guierrorty; function gui_hidewindow(id: winidty): guierrorty; function gui_raisewindow(id: winidty): guierrorty; function gui_lowerwindow(id: wini
Re: [MSEide-MSEgui-talk] Save forms to bitmaps?
Hello everybody. Lagprogramming sent me PMs and agreed to share it with you. I've read the mailing list discussion regarding saving rendered form bitmaps and framebuffers. Maybe the following information is useful to you. If you need a system function free backend in MSEgui you need to implement the functions: Code: Pascal [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} gdifuncty = (gdf_creategc,gdf_destroygc,gdf_changegc,gdf_createpixmap, gdf_pixmaptoimage,gdf_imagetopixmap, gdf_getcanvasclass,gdf_endpaint,gdf_flush,gdf_movewindowrect, gdf_drawlines,gdf_drawlinesegments,gdf_drawellipse,gdf_drawarc, gdf_fillrect, gdf_fillellipse,gdf_fillarc,gdf_fillpolygon,{gdf_drawstring,} gdf_drawstring16, gdf_setcliporigin, gdf_createemptyregion,gdf_createrectregion,gdf_createrectsregion, gdf_destroyregion,gdf_copyregion,gdf_moveregion, gdf_regionisempty,gdf_regionclipbox, gdf_regsubrect,gdf_regsubregion, gdf_regaddrect,gdf_regaddregion,gdf_regintersectrect, gdf_regintersectregion, gdf_copyarea,gdf_getimage, gdf_fonthasglyph, gdf_getfont,gdf_getfonthighres,gdf_freefontdata, gdf_gettext16width,gdf_getchar16widths,gdf_getfontmetrics ); LCL's customdrawn initially tried to use the fcl-image package, which is distributed with FPC. At the time customdrawn developers started working, the fcl-image package was far from being complete and it didn't had implemented many routines. Even today it misses features and has bugs, but it's better than it was at that time. In order to get over these limitations of the fcl-image package, customdrawn developers added functionality to LCL units like lcl/lazregions.pas. MSEgui might have it's own fcl-image modified implementation, too. Anyway, in the future, customdrawn developers will have to improve the fcl-image package, not the LCL units. In the mentioned example the developers added a new unit for regions, instead of improving the fcl-image package to support regions. For sure they had their reasons. Instead of fcl-image you may try to use bgrabitmap. I've never used it but maybe it has offscreen 2D rendering. For sure circular must know if bgrabitmap has better functionality than fcl-image and maybe has an idea on how much work is needed to implement in bgrabitmap the missing routines needed by msegui. --- This is the other PM: New Personal Message: Re: Saving form bitmaps Traduire le message en : Français | Ne jamais traduire à partir de : Anglais Lazarus Vous You have just been sent a personal message by lagprogramming on Lazarus. This is what has to be implemented for the GUI-interface Code: Pascal [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} function gui_init: guierrorty; function gui_deinit: guierrorty; procedure gui_cancelshutdown; procedure GUI_DEBUGBEGIN; export; procedure GUI_DEBUGEND; export; function gui_registergdi: guierrorty; function gui_setmainthread: guierrorty; function gui_sethighrestimer(const avalue: boolean): guierrorty; function gui_grouphideminimizedwindows: boolean; function gui_postevent(event: tmseevent): guierrorty; function gui_settimer(us: longword): guierrorty; procedure gui_disconnectmaineventqueue(); procedure gui_connectmaineventqueue(); function gui_hasevent: boolean; function gui_getevent: tmseevent; function gui_escapepressed: boolean; procedure gui_resetescapepressed; function gui_createwindow(const rect: rectty; var options: internalwindowoptionsty; var awindow: windowty): guierrorty; function gui_destroywindow(var awindow: windowty): guierrorty; function gui_getrootwindow(id: winidty = 0): winidty; function gui_getparentwindow(const awindow: winidty): winidty; function gui_reparentwindow(const child: winidty; const parent: winidty; const pos: pointty): guierrorty; function gui_getchildren(const id: winidty; out children: winidarty): guierrorty; function gui_showsysdock(var awindow: windowty): guierrorty; function gui_hidesysdock(var awindow: windowty): guierrorty; function gui_docktosyswindow(var child: windowty; const akind: syswindowty): guierrorty; function gui_trayme