Re: [MSEide-MSEgui-talk] Save forms to bitmaps?

2023-08-08 Thread Fred vS
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?

2023-08-08 Thread Sieghard via mseide-msegui-talk
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?

2023-08-08 Thread Sieghard via mseide-msegui-talk
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?

2023-08-08 Thread Fred vS
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?

2023-08-08 Thread Fred vS
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