Yes, it is not as simple as that. There are minor differences, for example in the way controls behave.
But isn't that what the abstraction layer (LCL) is supposed to hide from the developer? A developer is supposed to simply code for the LCL API, and internally LCL will take care of the different backends.
Yes, that is the goal and if that were true, that would make things easier.
That is how fpGUI works - 99.99% of all fpGUI based applications have no IFDEF's needed in the application code.
Are you suggesting to change the GUI of LazPaint and to use fpGUI?
If I set LazPaint to fpGUI, I get the following error:
fpgui\fpguiwsdialogs.pp(39,3) Fatal: Can not find unit fpg_base used by FpGuiWSDialogs.
I am not sure if BGRABitmap works with fpGUI either.
I like the idea of having a single widgetset, and at the same time, I like that the program interface blends into the operating system. With the mac version, it looks like mac interface and I am happy with that. The problems that cannot be solved are related to components that do not provide some features or that are buggy. A part from that, the tweaks work fine. Also some things are not purely a matter of widgetset. For example, on mac, OK and Cancel buttons are switched.
If fpGUI provides everything that is needed, it could be used for MacOS to avoid the following problems: ComboBox not providing ownerdraw, save dialog returning an invalid path.
Are there example applications running with fpGUI?
Another solution is to use custom drawn controls when there are some compatibility problems. For now, the combobox of CustomDrawn package does not seem to work.
For FreeBSD, if it is similar to linux, it is possible that it would not be much work to adapt and compile LazPaint. Maybe just by doing the following:
{$IFDEF LINUX}{$DEFINE LINUXLIKE}{$ENDIF}
{$IFDEF FREEBSD}{$DEFINE LINUXLIKE}{$ENDIF}
And then by replacing IFDEF LINUX by IFDEF LINUXLIKE.
Again, it works exactly like Linux. FreeBSD uses the exact same Xft/FreeType to render fonts. So hinting etc can also be tweaked to the user preference, just like under Linux.
Ok. I have looked at some screenshot using google search, it looks indeed like Linux. So I will apply the same level of antialiasing.
I haven't tried for a while. I'll update my local copies of BGRAControls, BGRABitmap and LazPaint and see how far it currently gets and let you know.
Ok, but please try BGRABitmap separately. Test programs are provided on LazPaint code repository.