www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - D is fast

reply "Andrew Fedoniouk" <news terrainformatica.com> writes:
I second on that :)

Teasing :) demo is here:
http://terrainformatica.com/screenshots/HarmoniaDemo.zip
(e.g. try to move splitter)

After loading and starting you should see this picture:
http://terrainformatica.com/screenshots/harmonia.png

Andrew.
Apr 25 2005
next sibling parent reply "Charlie" <charles jwavro.com> writes:
Wow this is looking awesome, when can we get something to play with ?

Charlie


"Andrew Fedoniouk" <news terrainformatica.com> wrote in message
news:d4jknu$2n39$1 digitaldaemon.com...
 I second on that :)

 Teasing :) demo is here:
 http://terrainformatica.com/screenshots/HarmoniaDemo.zip
 (e.g. try to move splitter)

 After loading and starting you should see this picture:
 http://terrainformatica.com/screenshots/harmonia.png

 Andrew.
Apr 25 2005
parent reply "Andrew Fedoniouk" <news terrainformatica.com> writes:
"when can we get something to play with ?"
I hope at the end of this week.

Andrew.

"Charlie" <charles jwavro.com> wrote in message 
news:d4jl8m$2nm0$1 digitaldaemon.com...
 Wow this is looking awesome, when can we get something to play with ?

 Charlie


 "Andrew Fedoniouk" <news terrainformatica.com> wrote in message
 news:d4jknu$2n39$1 digitaldaemon.com...
 I second on that :)

 Teasing :) demo is here:
 http://terrainformatica.com/screenshots/HarmoniaDemo.zip
 (e.g. try to move splitter)

 After loading and starting you should see this picture:
 http://terrainformatica.com/screenshots/harmonia.png

 Andrew.
Apr 25 2005
next sibling parent reply "Charlie" <charles jwavro.com> writes:
Do you have a name for it ?
Charlie

"Andrew Fedoniouk" <news terrainformatica.com> wrote in message
news:d4jlnh$2o7k$1 digitaldaemon.com...
 "when can we get something to play with ?"
 I hope at the end of this week.

 Andrew.

 "Charlie" <charles jwavro.com> wrote in message
 news:d4jl8m$2nm0$1 digitaldaemon.com...
 Wow this is looking awesome, when can we get something to play with ?

 Charlie


 "Andrew Fedoniouk" <news terrainformatica.com> wrote in message
 news:d4jknu$2n39$1 digitaldaemon.com...
 I second on that :)

 Teasing :) demo is here:
 http://terrainformatica.com/screenshots/HarmoniaDemo.zip
 (e.g. try to move splitter)

 After loading and starting you should see this picture:
 http://terrainformatica.com/screenshots/harmonia.png

 Andrew.
Apr 25 2005
parent "Andrew Fedoniouk" <news terrainformatica.com> writes:
Hi, Charlie,
20 posts below it was sort of announcment:

---------------------------------------------------
"It got a name: "Harmonia" or Harmonia framework

( Harmonia as Phobos and Deimos was a kid of Ares/Mars. BTW: This guy was so
productive.... )

It has only win32 port so far but it is highly portable: it uses around 30
functions which
use underlying OS resourses and they are located in separate native package
in four files
native.application, native.graphics, native.exchange, native.window. All
native functions
use 'native' prefix, e.g.  nativeSetCursor(CursorType ct);

Architecture and main goals:
1) Clear and classic class hierarchy (close to initial Java AWT)
2) Capture/bubble event propagation schema ( used in HTML event model
http://catcode.com/domcontent/events/capture.html) which allows
to create extremely compact and clean event handling.
3) Builtin compact and fast (in fact very fast) HTML engine. HTML used
as universal layout manager, renderer and resource definition framework:
e.g. dailogs, tooltips are entities defined by HTML.
4) Themeable - means that rendering style - colors, fonts, etc. are strongly
separated from interaction and logic code. On the screenshot is a rendering
of Harmonia default "Pathfinder theme" (themes/pathfinder.d, inspired by
color gamma of shots
taken by Mars Pathinder crawlers)
5) It does not use native OS widgets. Everything: menus, dialogs, controls,
etc. are under
the Harmonia control and are subjects of themeable styling. It is windowless
framework,
means it is use only OS toplevel window frames. Everything inside is
"harmonised".
This approach is highly usefull for creating modern web style (but
lightwight!) UI
and in games."




"Charlie" <charles jwavro.com> wrote in message 
news:d4jn52$2pj2$1 digitaldaemon.com...
 Do you have a name for it ?
 Charlie

 "Andrew Fedoniouk" <news terrainformatica.com> wrote in message
 news:d4jlnh$2o7k$1 digitaldaemon.com...
 "when can we get something to play with ?"
 I hope at the end of this week.

 Andrew.

 "Charlie" <charles jwavro.com> wrote in message
 news:d4jl8m$2nm0$1 digitaldaemon.com...
 Wow this is looking awesome, when can we get something to play with ?

 Charlie


 "Andrew Fedoniouk" <news terrainformatica.com> wrote in message
 news:d4jknu$2n39$1 digitaldaemon.com...
 I second on that :)

 Teasing :) demo is here:
 http://terrainformatica.com/screenshots/HarmoniaDemo.zip
 (e.g. try to move splitter)

 After loading and starting you should see this picture:
 http://terrainformatica.com/screenshots/harmonia.png

 Andrew.
Apr 25 2005
prev sibling parent reply "Alexander Panek" <alexander.panek brainsware.org> writes:
On Mon, 25 Apr 2005 22:59:28 +0200, Andrew Fedoniouk  
<news terrainformatica.com> wrote:

 "when can we get something to play with ?"
 I hope at the end of this week.

 Andrew.

 "Charlie" <charles jwavro.com> wrote in message
 news:d4jl8m$2nm0$1 digitaldaemon.com...
 Wow this is looking awesome, when can we get something to play with ?

 Charlie


 "Andrew Fedoniouk" <news terrainformatica.com> wrote in message
 news:d4jknu$2n39$1 digitaldaemon.com...
 I second on that :)

 Teasing :) demo is here:
 http://terrainformatica.com/screenshots/HarmoniaDemo.zip
 (e.g. try to move splitter)

 After loading and starting you should see this picture:
 http://terrainformatica.com/screenshots/harmonia.png

 Andrew.
sounds very nice! may we get the code of the demo to see how it works? Alex -- huh? did you say something? :o
Apr 25 2005
parent reply "Andrew Fedoniouk" <news terrainformatica.com> writes:
Hi, Alex,

 may we get the code of the demo to see how it works?
main.d is attached to the post begin 666 main.d M:6UP;W)T(&AA<FUO;FEA+G5I+F%P<&QI8V%T:6]N.PT*:6UP;W)T(&AA<FUO M;7!O<G0 :&%R;6]N:6$N=6DN979E;G1S.PT*:6UP;W)T(&AA<FUO;FEA+G5I M;',N<V-R;VQL8F%R.PT*:6UP;W)T(&AA<FUO;FEA+G5I+F-O;G1R;VQS+FQI M"FEM<&]R="!H87)M;VYI82YU:2YC;VYT86EN97)S+G-P;&ET=&5R.PT*:6UP M;W)T(&AA<FUO;FEA+G5I+F-O;G1A:6YE<G,N=&%B<SL-"FEM<&]R="!H87)M M=&%T:6, =&AI<R I( T*>PT*("!!<'!L:6-A=&EO;BYO;E-T87)T(#T M(" +R\ 4G5N=&EM92!S=&%R=&5D+B!3=&%T:6-S('=E<F4 :6YT:71A;&EZ M(&AE<F4-"B (" ("AN97< 37E7:6YD;W<H*2DN<W1A=&4 /2!7:6YD;W<N M/2 -"B (" O+R!!;&P =VEN9&]W<R!C;&]S960 <V\ 9&\ 9W)A8V5F=6P M;"!H<#L- M*3L-"B (" ('-P;&ET=&5R('X](&QB.PT*"2 ("!L8BYP;&%C92 ](')E M(" (" (")/;F4B+ T*(" (" (" B5'=O(BP-"B (" (" (E1H<F5E M(")3:7 4VEX(%-I>"!3:7 4VEX(%-I>"!3:7 4VEX(BP-"B (" (" M;F%M92 ](")(5$U,(%1E<W0B.PT*(" (" =&%B<R!^/2!H<#L-" T*(" M(" :' N;&]A9 T**"(\2%1-3"!B86-K+6-O;&]R/2=E9&ET(&1I86QO9R< M/DA434P =&5X=#PO23X )FYB<W [;&]A9&5D(&EN=&\ /$(^2%1-3%9I97<\ M+T(^("T <V-R;VQL86)L92!(5$U,(&-O;G1A:6YE<BX\+T Q/ T*(" \4#Y) M;FQI;F4 :6UA9V4Z/$E-1R!S<F,])W1E<W0N<&YG)R\^(&%N9" \0T]$13X M8V]D92!E>&%M<&QE.R \+T-/1$4^/"]0/ T*(" \4"!H96EG:'0],3 P)2!P M861D:6YG/3$P<'0 8F]R9&5R+7=I9'1H/3-P>"!B;W)D97(M<W1Y;&4])W-O M;&ED(&YO;F4 ;F]N92!N;VYE)R!B;W)D97(M8V]L;W(]9&EA;&]G+7-H861O M=&%N9&%R9"!(5$U,("T <&5R8V5N=', :&5R92!A<F4 /$D^<&5R8V5N=', M9G)O;2!F<F5E('-P86-E/"])/BX-"B (" \0E(O/DYO=&EC92 S('!I>&5L M(&)A<B!A="!T:&4 ;&5F="!S:61E("T :70 :7, ;&5F="!B;W)D97( ;V8 M=&AE('!A<F%G<F%P:"X 4W5C:"!P97)C96YT<R!A<F4 =7-E9"!I;G-T96%D M(&]F(&9L97 G97, :6X 6%5,+CPO4#X-"B /%1!0DQ%(&-E;&QS<&%C:6YG M/3$P<' 8V5L;'!A9&1I;F<],3!P>"!P861D:6YG/3$P<' 8F]R9&5R+7=I M9'1H/3%P>"!B;W)D97(M<W1Y;&4]<V]L:60 8F]R9&5R+6-O;&]R/61I86QO M9RUS:&%D;W< / T*(" (#Q44CX-"B (" \5$0 =VED=& ],S E(&AE:6=H M=#TQ M/2=H96QL;R!W;W)L9"< =VED=& ],3 P<' +SX-"F%N9"!B=71T;VXZ/$E. M4%54('1Y<&4]8G5T=&]N('9A;'5E/2=B=71T;VXG('=I9'1H/38P<' +SX- M"F%N9"!C;VUB;V)O>#H-"CQ)3E!55"!T>7!E/7-E;&5C="!W:61T:#TV,'!X M/ T*(" (" (" \3U!424]./D]N93PO3U!424]./ T*(" (" (" \3U!4 M24]./E1W;SPO3U!424]./ T*(" (" (" \3U!424]./E1H<F5E/"]/4%1) M3U!424]./D9I=F4\+T]05$E/3CX-"B (" (" /$]05$E/3CY3:7 4VEX M4%1)3TX^4V5V96X\+T]05$E/3CX-"B (" (" /$]05$E/3CY%:6=H=#PO M3U!424]./ T*(" (" (" \3U!424]./DYI;F4\+T]05$E/3CX-"B (" M<CTG9&EA;&]G+6QI9VAT('-C<F]L;&)A<B< 8F]R9&5R/2<Q<' <V]L:60 M(" (" \5$0 8F]R9&5R/2<Q<' <V]L:60 9&EA;&]G+7-H861O=R< =&5X M="UA;&EG;CUR:6=H=#YR:6=H="!A;&EG;F5D(&-E;&P =VET:"!B;W)D97(\ M+U1$/ T*(" (" /%1$/F9O=7(\+U1$/ T*(" (" /%1$(&)A8VLM8V]L M;W(])V1I86QO9RUL:6=H="!S8W)O;&QB87(G(&)O<F1E<CTG,7!X('-O;&ED M(&1I86QO9RUS:&%D;W<G/C(\+U1$/ T*(" (#PO5 M(" (" /%1$(&-O;'-P86X],B!B86-K+6-O;&]R/2=D:6%L;V<M;&EG:'0 M9&EA;&]G+7-H861O=R<^8V]L<W!A;CTR+"!T86)L92!C96QL<R!W:71H(&=R M861I96YT(&)A8VMG<F]U;F1S/"]41#X-"B (" (#Q41"!B86-K+6-O;&]R M/2=D:6%L;V<M;&EG:'0 9&EA;&]G+6QI9VAT('-C<F]L;&)A<B!D:6%L;V<M M<VAA9&]W)SXS/"]41#X-"B (" \+U12/ T*(" \+U1!0DQ%/ T*(" \4#Y( M>7!E<FQI;FL =&5S=#H /$$ :')E9CTG:'1T<#HO+W1E<G)A:6YF;W)M871I M*0T*(" (" >PT*(" (" ("!(=&UL4&%N96P =R ](&YE=R!(=&UL4&%N M96PH*3L-"B (" (" =RYN86UE(#T =&]55$8Q-BAF;W)M870H(E1E<W0 M9"AF;W)M870H(CQ(5$U,(&)A8VLM8V]L;W(]961I="!B;W)D97(])S%P>"!S M;VQI9"!D:6%L;V<M<VAA9&]W)R!P861D:6YG/3AP>#Y497-T(",\0CXE9#PO M:60 9')A=T-O;G1E;G0H1W)A<&AI8W, 9RD-"B >PT*(" (" <W5P97(N M(" (" (&%U=&\ 1W)A<&AI8W, :6< /2!N97< 1W)A<&AI8W,H:6TI.PT* M(" ('!O:6YT(&1S=" ]('!L86-E+G!O:6YT3V8H,2D[("\O('1O<"!R:6=H M(&1S="YY("T](&EM+F1I;65N<VEO;BYY.PT*(" (" ("!G+F-O<'E296-T M.PT*(" ('-P;&ET=&5R+G!L86-E(#T !" `` ` end
Apr 25 2005
next sibling parent reply "Alexander Panek" <alexander.panek brainsware.org> writes:
On Mon, 25 Apr 2005 23:50:28 +0200, Andrew Fedoniouk  
<news terrainformatica.com> wrote:

 Hi, Alex,

 may we get the code of the demo to see how it works?
main.d is attached to the post
it also looks great! =) btw, is/will there also (be) menu-support? (the MainMenu, as it`s called Alex -- huh? did you say something? :o
Apr 25 2005
parent reply "Andrew Fedoniouk" <news terrainformatica.com> writes:
 btw, is/will there also (be) menu-support? (the MainMenu, as it`s called

Yes, MenuBar, Menu and PopupMenu are almost there. Basic widget set includes: Buttons: Button, CommandButton, OptionBox, CheckBox. Edit: EditBox (singleline), RichTextBox ( multiline editor, if I will have a time) Selector: ListBox, DDListBox, ComboBox. Other: TreeView, Grid (if I will have a time) Bars: ToolBar and StatusBar. Containers: Splitter and Tabs. Tooltips (plain and HTML tooltips) and HTML popups. All controls are "windowless" - means that they are not using system widgets. Overall pure D part is pretty clean. Example of real Splitter.d attached. "native" modules (4 items) are mess a bit. "Alexander Panek" <alexander.panek brainsware.org> wrote in message news:op.sps5xwt8y2yy8c chello080109082145.3.15.vie.surfer.at...
 On Mon, 25 Apr 2005 23:50:28 +0200, Andrew Fedoniouk
 <news terrainformatica.com> wrote:

 Hi, Alex,

 may we get the code of the demo to see how it works?
main.d is attached to the post
it also looks great! =) btw, is/will there also (be) menu-support? (the MainMenu, as it`s called Alex -- huh? did you say something? :o
begin 666 splitter.d M<G0 :&%R;6]N:6$N=6DN=VED9V5T<SL-" T*8VQA<W, 4W!L:71T97(Z(%=I M9&=E=',-"GL-"G!R;W1E8W1E9#H- M8F]O;"!V97)T:6-A;"P =6EN="!B87)3:7IE(#T M+G9E<G1I8V%L(#T M979T+G!O<RYY("T 9FER<W0N<&QA8V4N:&5I9VAT*3L-" D)"0ER971U<FX M=')U93L-" D)"6-A<V4 179E;G10;VEN=&5R+E50. T*"0D)"6-A<'1U<F4H M9F%L<V4I.PT*"0D)"7)E='5R;B!T<G5E.PT*"0D)8V%S92!%=F5N=%!O:6YT M97(N34]613H-" D)"0EI9B A979T+FES4&]I;G1"=71T;VXI(')E='5R;B!F M<VEZ92AE=G0N<&]S+G +2!O9F9S970L9FER<W0N<&QA8V4N:&5I9VAT*3L- M92YW:61T:"QE=G0N<&]S+GD +2!O9F9S970I.PT*"0D)"61O3&%Y;W5T*"D[ M72YL96YG=& (3T ,BD <F5T=7)N(&9A;'-E.PT*"0E7:61G970 9FER<W0 M+G!L86-E(#T M"0EI;G0 =S$ /2!F:7)S="YP;&%C92YW:61T:#L- M<E-I>F4I.PT*"0D):68H('<R(#P ," I('L =S( /2 P.R!W,2 ]('!L86-E M>F4H=S$L('!L86-E+FAE:6=H="D[( T*"0D);&%S="YP;&%C92 ](')E8W0H M"0D)9FER<W0N<&QA8V4 /2!S:7IE*'!L86-E+G=I9'1H+"!H,2D[( T*"0D) M;&%S="YP;&%C92 ](')E8W0H<&]I;G0H,"QH,2 K(&)A<E-I>F4I+'-I>F4H

` end
Apr 25 2005
next sibling parent reply Derek Parnell <derek psych.ward> writes:
On Mon, 25 Apr 2005 16:59:27 -0700, Andrew Fedoniouk wrote:


[snip]

 All controls are "windowless" - means that they are not using system 
 widgets.
Does that mean you are doing the low-level rendering in D? And is that using Regions, or just simple pixel draws. How are you handling the Z-order issues? -- Derek Melbourne, Australia 26/04/2005 10:05:00 AM
Apr 25 2005
parent reply "Andrew Fedoniouk" <news terrainformatica.com> writes:
 Does that mean you are doing the low-level rendering in D? And is that
 using Regions, or just simple pixel draws. How are you handling the 
 Z-order
 issues?
I don't know what "low level" means here. Nothing spectacular there in fact. All drawing done through Graphics object (attached). All target platforms have correspondent native*** function implemented. This Graphics is a common denominator for all GUI platforms. There are no Regions as a separate entity. Just pair of PushClip/PopClip. There are plans to create GraphicsEx based on http://www.antigrain.com/ but in next version. Andrew. "Derek Parnell" <derek psych.ward> wrote in message news:1fvlwk767kij4.1delnx3s7y2ns.dlg 40tude.net...
 On Mon, 25 Apr 2005 16:59:27 -0700, Andrew Fedoniouk wrote:


 [snip]

 All controls are "windowless" - means that they are not using system
 widgets.
Does that mean you are doing the low-level rendering in D? And is that using Regions, or just simple pixel draws. How are you handling the Z-order issues? -- Derek Melbourne, Australia 26/04/2005 10:05:00 AM
begin 666 graphics.d M>PT*(" ('!R:79A=&4 :6UP;W)T(&AA<FUO;FEA+G5I+FYA=&EV92YW:6XS M,F=R87!H:6-S.PT*?0T*96QS90T*>PT*(" ('-T871I8R!A<W-E<G0H,"D[ M"0DO+R!7:6YD;W=S(&]N;'D 9F]R(&$ =VAI;&4L(&YE960 <V]M96)O9'D M86)L92!E;G1I='D-"B J("!7:6YD;W<L($EM86=E(&%N9"!0<FEN=&5R(&%R M92!)4W5R9F%C97,-"B J+PT*:6YT97)F86-E($E3=7)F86-E( T*>PT*("!V M+PT*96YU;2 Z('5I;G0 +R\ <WES=&5M(&-O;&]R<PT*>PT*("!44D%.4U!! M4D5.5" (" (" (#T ,'A&1D9&1D9&1BP-"B 3D]?0T],3U( (" (" M3TQ/4E]$24%,3T=?0E))1TA4(#T M3T=?4TA!1$]7( D (#T M3E]415A4(" (#T M5$585" (" (#T M0T%05$E/3E]415A4(#T M(" (" (#T M8R M(&1R87=I;F< <')I;6ET:79E<RX-"B *B\-" T*8VQA<W, 1W)A<&AI M8W,Z('!U8FQI8R!.871I=F5'<F%P:&EC<PT*>PT*("!P86-K86=E. T*(" M($E3=7)F86-E(%]S=7)F86-E.PT*(" ($9O;G0 (" (%]F;VYT.PT*(" M('-T871I8R!&;VYT(%]D969A=6QT1F]N=#L-"B ("!C;VQO<B ("!?=&5X M.B ( T*(" ( T*(" ('1H:7,H($E3=7)F86-E('-U<F9A8V4 *2 -"B M("![( T*(" (" 7W-U<F9A8V4 /2!S=7)F86-E.R -"B (" (%]S=7)F M86-E+FEN:71I86QI>F4H=&AI<RD[(" -"B (" (&YA=&EV95-E=$9O;G0H M("!I9BA?<W5R9F%C92D 7W-U<F9A8V4N9FEN86QI>F4H=&AI<RD[(%]S=7)F M86-E(#T ;G5L;#M M86YT(&9O<B!A(&1R87< ;W!E<F%T:6]N('1H870 9')A=W, =&AE('-O=7)C M92!C=7)R96YT('-U<F9A8V4N(%1H92!C;W!Y(&]P97)A=&EO;B!I<R!P97)F M=&AE('-E='1I;F< ;V8 =&AE(&-U<G)E;G0 9')A=VEN9R!O<&5R871I;VXN M86YG;&4-"B (" 0'!A<F%M(&1S="!T:&4 9&5S=&EN871I;VX <&]I;G0 M*&]R:6=I;B!O9B!W:&5R92!T;R!C;W!Y*0T*(" ("! <V5E("-S971$<F%W M<W0L(')E8W0 <W)C+"!'<F%P:&EC<R!G<W)C(#T M(" ("!I9B 9W-R8R!I<R!N=6QL("D 9W-R8R ]('1H:7,[( T*(" (" M;F%T:79E0V]P>5)E8W0H(&=S<F,L('-R8RP 9'-T("D[( T*(" ('T-" T* M(" ('9O:60 =&EL95)E8W0H<F5C="!D<W0L(')E8W0 <W)C+"!'<F%P:&EC M<R!G<W)C(#T M"B (" (&EN="!M87A9(#T 9'-T+F)O='1O;3L-"B (" (&EN="!S<F-( M(#T <W)C+FAE:6=H=#L-"B (" (&EN="!S<F-7(#T <W)C+G=I9'1H.PT* M>2 ](&1S="YT;W [(' N>2 \/2!M87A9.R!P+GD *ST <W)C2"D-"B (" M('L-"B (" (" :68H<"YY("L <RYY(#X ;6%X62D <RYY(#T ;6%X62 M M+G /2!D<W0N;&5F=#L <"YX(#P](&UA>% [(' N>" K/2!S<F-7*0T*(" M(&=S<F, :7, ;G5L;" I(&=S<F, /2!T:&ES.PT*(" (" ;F%T:79E4W1R M971C:%)E8W0H(&=S<F,L('-R8RP 9'-T("D[( T*(" ('T-" T*(" ("\J M* T*(" (" J(&1R87< <F5C="!U<VEN9R!C=7)R96YT(&)R=7-H("AI9B!A M;GDI(&%N9"!P96X *&EF(&%N>2D 9F]R(&)O<F1E<G,-"B (" *B\-" T* M>6=O;B <&]I;G1;72!P;VEN=', *0T*(" ('L-"B (" (&YA=&EV941R M87=0;VQY9V]N*'!O:6YT<RD[( T*(" ('T-" T*(" ("\O('-O;&ED(&9I M:6QL4F5C="AR96-T(')C+"!C;VQO<B!B*2 -"B ("![( T*(" (" ;F%T M;W!,969T+"!C;VQO<B!T;W!2:6=H="P 8V]L;W( 8F]T=&]M4FEG:'0L(&-O M="AR8RQT;W!,969T+'1O<%)I9VAT+&)O='1O;5)I9VAT+&)O='1O;4QE9G0I M,BD[( T*(" ('T-"B -" T*(" (&5N=6T 1%)!5SH =6EN=" O+R!D<F%W M(" (" (" 0T5.5$52(#T ,' Q+ T*(" (" (" (%))1TA4(#T ,' R M+ T*(" (" (" ( T*(" (" (" (%1/4" ]( D),' P,"P-"B (" M(" ("!-241$3$4 /2 ),' Q,"P-"B (" (" ("!"3U143TT /2 ),' R M(" ("!0051(7T5,3$E04TE3(#T M('1E>'0 870 <&]S:71I;VX )W=H97)E)PT*(" ('9O:60 9')A=T-H87)S M*'=C:&%R6UT 8VAA<G,L('!O:6YT('=H97)E*2 -"B ("![( T*(" (" M+R]R96-T(')C(#T <F5C="AW:&5R92YX+'=H97)E+GDL,"PP*3L-"B (" M:&%R<RAC:&%R<RDN>#L-"B (" (" :6YT('D /2!W:&5R92YY("L 7V9O M;G0N87-C96YT("L ,3L-"B (" (" 9FEL;%)E8W0H<F5C=" =VAE<F4N M>"P >2P =VAE<F4N>" K('< +2 Q+"!Y("DL(%]T97AT0V]L;W(I.PT*(" M(" ?0T*(" ('T-" T*(" ("\O(&1R87< =&5X="!A;&EG;F5D(&EN<VED M87)S+"!R96-T('=H97)E+"!U:6YT(&9L86=S(#T 1%)!5RY,1494('P 1%)! M<F5T=7)N(&1I;65N<VEO;G, ;V8 =&AE('-T<FEN9R -"B (" O+R!O;B!T M:&4 9W)A<&AI8W, 9F]R('1H92!C=7)R96YT(&9O;G0-"B ("!S:7IE(&UE M(" (" 875T;R!'<F%P:&EC<R!I9R ](&YE=R!'<F%P:&EC<RAS<F,I.PT* M=R!M;VYO8VAR;VUE(&)I=&UA< T*(" ('9O:60 9')A=U!I>&UA<"AC;VQO M<B!C+"!P;VEN="!D<W0L('-I>F4 <&EX;6%P4VEZ92P =6)Y=&5;72!P:7AM M4VEZ92QP:7AM87 I.PT*(" ('T-" T*(" ("\O(&1E=&5R;6EN97, :68 M(" ('T-" T*(" (&5N=6T 4&5N4W1Y;&4 .B!U:6YT( T*(" ('L-"B M(" (%-/3$E$7TE.4TE$12P-"B (" (%-/3$E$+ T*(" (" 1$%32"P- M"B (" ($1/5"P-"B (" ($1!4TA$3U0L( T*(" (" 1$%32$1/5$1/ M5 T*(" ('T-" T*(" ('9O:60 <V5T4&5N*&-O;&]R(&,L(&EN="!W:61T M(" >PT*(" (" (&YA=&EV95-E=%!E;BAC+"!W:61T:"P 8V%S="AU:6YT M+2 -"B (" (%9%4E1)0T%,+" (" (" ("\O('Q\?'Q\( T*(" (" M(" (" (" O+R O+R\O+R -"B (" ($-23U-3+" (" (" (" ("\O M;&4 <W1Y;&4 /2!"<G5S:%-T>6QE+E-/3$E$*0T*(" ('L-"B (" ("!N M0G)U<V H5%)!3E-005)%3E0L(&-A<W0H0G)U<VA3='EL92DP*3L-"B ("!] M875L=$9O;G0I.PT*(" (" 96QS90T*(" (" ("!N871I=F53971&;VYT M*%]F;VYT(#T M<FX 7V9O;G0[('T-" T*(" ("\O('-E="!T97AT(&-O;&]R(" A*0T*(" M;F4[('T-"B ("!B;V]L('5N9&5R;&EN92AB;V]L('8I('L <F5T=7)N(%]U M>PT*(" (" ;F%T:79E4V5T3W)I9VEN*' I.PT*(" ('T-" T*(" ("\O M('!U<V 8VQI<" M('-E=', 8VQI<'!I;F< 87)E82P <F5T=7)N<R!T<G5E M(&EF(')E<W5L=&%N="!A<F5A(&ES(&YO="!E;7!T>0T*(" (&)O;VP <'5S M:$-L:7 H<F5C="!R8RD >R!R971U<FX ;F%T:79E4'5S:$-L:7 H<F,I.R!] M"B (" O+R!!5%1..B!C86QL('1H:7, ;VYL>2!I9B!P<F5V:6]U<R!P=7-H M0VQI<"!R971U<FYE9" G=')U92<-"B ("!V;VED('!O<$-L:7 H*2![(')E M>&5L<U!E<DEN8V H8F]O;"!R97-E=" ](&9A;'-E*0T*(" ('L-"B (" M:" ](&YA=&EV95!I>&5L<U!E<DEN8VA/;E-C<F5E;B I.PT*(" (" <F5T M=7)N('!I>&5L<TEN26YC:#L- M=#H M1&5F( T*(" ('L-"B (" (&-H87);72 ;F%M93L-"B (" (&EN=" M(" <VEZ93L +R\ :6X <&EX96QS+ T*(" (" 8F]O;" ("!B;VQD.PT* M+$9O;G0I.PT*(" (" +R\ 8W)E871E(&1E9F%U;'0 <WES=&5M(&9O;G0L M*$9O;G1$968L1F]N="D-"B ("!S=&%T:6, 1F]N="!C<F5A=&5">41E9BA& M*"!D968N;F%M92P 9&5F+G-I>F4L(&1E9BYB;VQD+"!D968N:71A;&EC("D[ M871I8R!&;VYT(&-R96%T92AC:&%R6UT ;F%M92P :6YT('-I>F50:7AE;',L M(&)O;VP 8F]L9" ](&9A;'-E+"!B;V]L(&ET86QI8R ](&9A;'-E*2 -"B M(" <F5T=7)N(&9O;G1S+FEN=&5R;BAD968L("9C<F5A=&5">41E9B I.PT* M(" ('T-"B ("!S=&%T:6, 1F]N="!C<F5A=&4H8VAA<EM=(&YA;64L(&1O M=6)L92!S:7IE4&]I;G1S+"!B;V]L(&)O;&0 /2!F86QS92P 8F]O;"!I=&%L M(" 9&5F+FYA;64 /2!N86UE.PT*(" (" 9&5F+G-I>F4 /2 M(&-A<W0H M(&9O;G1S+FEN=&5R;BAD968L("9C<F5A=&5">41E9B I.PT*(" ('T-" T* M(" ('-T871I8R!&;VYT('-Y<W1E;2 I("\O(&1E9F%U;'0 <WES=&5M(&9O M<FX 9&5F+FYA;64[('T-"B ("!I;G0 (" ('-I>F4H*2 ("![(')E='5R M;B!D968N<VEZ93L ?0T*(" (&)O;VP (" 8F]L9" I(" ('L <F5T=7)N M=F5);FET365T<FEC<RAN=6QL*3L <F5T=7)N(%]A<V-E;G0[('T-"B ("!I M;G0 (" (&AE:6=H=" I("![(&YA=&EV94EN:71-971R:6-S*&YU;&PI.R!R M971U<FX 7VAE:6=H=#L M(#P M8GET92!B("D-"GL-"B <F5T=7)N("AC87-T*&-O;&]R*6$ /#P ,C0I('P M*&-A<W0H8V]L;W(I8B \/" Q-BD ?" H8V%S="AC;VQO<BEG(#P M:70-"GL-"B 4% L("\O('!I>&5L<PT*("!-32P +R\ ;6EL;&EM971E<G,- M("\O('!O:6YT<PT*("!04BP +R\ <&5R8V5N=',-"GT-" T*=6EN="!P:7AE M;',H9&]U8FQE(&0L($Q5(&QU*0T*>PT*("!S=VET8V H(&QU("D-"B >PT* M(" (&-A<V4 3%4N4% Z(')E='5R;B!C87-T*'5I;G0I9#L-"B ("!C87-E M($Q5+DU-.B!R971U<FX 8V%S="AU:6YT*2AC87-T*&1O=6)L92DH1W)A<&AI M8W,N<&EX96QS4&5R26YC:" I("H 9"D +R R-2XT*3L-"B ("!C87-E($Q5 M+D--.B!R971U<FX 8V%S="AU:6YT*2AC87-T*&1O=6)L92DH1W)A<&AI8W,N M<&EX96QS4&5R26YC:" I("H 9"D +R R+C4T*3L-"B ("!C87-E($Q5+DE. M.B!R971U<FX 8V%S="AU:6YT*2AC87-T*&1O=6)L92DH1W)A<&AI8W,N<&EX M96QS4&5R26YC:" I("H 9"DI.PT*(" (&-A<V4 3%4N4%0Z(')E='5R;B!C M87-T*'5I;G0I*&-A<W0H9&]U8FQE*2A'<F%P:&EC<RYP:7AE;'-097));F-H 3971U<FX ,#L- ` end
Apr 25 2005
next sibling parent reply Nils Hensel <nils.hensel web.de> writes:
Andrew Fedoniouk schrieb:
 Nothing spectacular there in fact. All drawing done
 through Graphics object (attached).
 All target platforms have correspondent native*** function implemented.
 This Graphics is a common denominator for all GUI platforms.
Doesn't that mean one just had to write an OpenGL Graphics object to be multiplatform? Regards, Nils
Apr 25 2005
parent "Andrew Fedoniouk" <news terrainformatica.com> writes:
 Doesn't that mean one just had to write an OpenGL Graphics object to be 
 multiplatform?
Yes, it is possible to write Graphics based on OpenGL primitives.
 ... to be multiplatform?
Ummm.... See, there are four (and only four) native group of functions in files: native.application - startup/shutdown, GUI message pump, standard dialogs. native.graphics - per se native.exchange - clipboard support and the like. native.window - top-level window bindings. I think that GLUT or GLUI could be used as an example for other than Graphics functions. I am not sure though. As an idea: Ben's Hinkle MinWin library could be used as a porting layer. At least partially. Andrew. "Nils Hensel" <nils.hensel web.de> wrote in message news:d4kjmm$jto$1 digitaldaemon.com...
 Andrew Fedoniouk schrieb:
 Nothing spectacular there in fact. All drawing done
 through Graphics object (attached).
 All target platforms have correspondent native*** function implemented.
 This Graphics is a common denominator for all GUI platforms.
Doesn't that mean one just had to write an OpenGL Graphics object to be multiplatform? Regards, Nils
Apr 25 2005
prev sibling parent reply Norbert Nemec <Norbert Nemec-online.de> writes:
Andrew Fedoniouk schrieb:
 There are plans to create GraphicsEx based on
 http://www.antigrain.com/ but in next version.
Have you thought about using Cairo? (www.cairographics.org) This might give you far more performance, since it allows hardware accellerated backends as well (among many others) AGG does, afaik, aim more at very low level control and precision than at performance. (Besides, a AGG backend for Cairo is certain to be produced by someone, and this would probably also offer access to the low-level details in those points where you need them.)
Apr 27 2005
parent reply "Andrew Fedoniouk" <news terrainformatica.com> writes:
 Have you thought about using Cairo?
Well, it is matter of personal preferences I know author of AGG (Max Schemanarev) in person, so he may help in the case. Cairo dependends on libpixman but it is in C. I need to take a closer look again on it to be short. I don't think that antialiased rendering should be used everywhere. For cases when you definitely need it AGG works and works well. Other GUI stuff - rendering of basic widgets does not require AA drawing. Harmonia already supports alpha channel rendering so complex widget shapes rendered as a composition of static 32bpp PNGs. Harmonia relies on OS graphics primitives which are already hardware accelerated. E.g. on Windows it uses text rendering with ClearType (if it is enabled). Andrew. "Norbert Nemec" <Norbert Nemec-online.de> wrote in message news:d4nsch$spn$1 digitaldaemon.com...
 Andrew Fedoniouk schrieb:
 There are plans to create GraphicsEx based on
 http://www.antigrain.com/ but in next version.
Have you thought about using Cairo? (www.cairographics.org) This might give you far more performance, since it allows hardware accellerated backends as well (among many others) AGG does, afaik, aim more at very low level control and precision than at performance. (Besides, a AGG backend for Cairo is certain to be produced by someone, and this would probably also offer access to the low-level details in those points where you need them.)
Apr 27 2005
parent reply Georg Wrede <georg.wrede nospam.org> writes:
Andrew Fedoniouk wrote:
 I don't think that antialiased rendering should be used everywhere.
There may be several things for which you don't need antialiased rendering. However, I can only think of GUI Widgets. Images usually do need antialiased rendering. Pictures (as in camera shots), rotated, composited, transparent, or vector graphics -- all of these do actually need antialiased rendering. For a "free flow" of "items" on the screen, most do actually need antialiasing. Even fonts, unless you use the (very few) Microsoft/Adobe owned ones. But they're not free. (As in beer.) Also, do remember, that when screen resolutions exceed what one can see with plain eyes, then things like window borders, and the like, have to be defined in fractions of pixels (exceeding 1.0 pixels), to be usable at all. Also most of the motivation of using larger-than-the-minimum font sizes is actually due to wanting to use aliased fonts, not necessarily just "larger" fonts. (Thus erasing the virtues of a larger screen estate as such.) --- Let's just say, that if antialiasing were invented years before lcd-screens, then everything would be antialiased. Then wed have (as standard issue) the user-definable Virtual Size. Thus, there'd be a slider, where you can zoom the entire screen, as if it were just a zoom view of a piece of paper, through an SLR camera. Oh, and we _will_ get there -- very shortly. The fixed screen sizes, non-aliased window decorations, button borders, and System Fonts, all will vanish very shortly. The need is there, the means are there, all we need to wait for is the Recognition of that it's _both_ important, and possible right now.
Apr 27 2005
next sibling parent "Andrew Fedoniouk" <news terrainformatica.com> writes:
 Images usually do need antialiased rendering. Pictures (as in camera 
 shots), rotated, composited, transparent, or vector graphics -- all of 
 these do actually need antialiased rendering.
Rotation and stretching of images by itself is sort of antialiasing. .... "composited, transparent" ... I have no idea how this is tied with antialiasing. And only pure vector graphics - yes - do need antialiasing and on the screen. For this cases will be GraphicsEx.
 For a "free flow" of "items" on the screen, most do actually need 
 antialiasing.
Could you give an example?
 Even fonts, unless you use the (very few) Microsoft/Adobe owned ones. But 
 they're not free. (As in beer.)
ClearType (algorithm of font AA drawing) is not a property of the particular font but rather method of font rendering. It is builtin in Windows and in some flavours of Linux. Mac also has something.
 Also, do remember, that when screen resolutions exceed what one can see 
 with plain eyes, then things like window borders, and the like, have to be 
 defined in fractions of pixels (exceeding 1.0 pixels), to be usable at 
 all.
??? I missed you here completely. If screen will have more than 300DPI resolution it will not need AA drawing nor subpixel positioning as size of pixels will be small enough to see smooth picture. Andrew. "Georg Wrede" <georg.wrede nospam.org> wrote in message news:42703177.40503 nospam.org...
 Andrew Fedoniouk wrote:
 I don't think that antialiased rendering should be used everywhere.
There may be several things for which you don't need antialiased rendering. However, I can only think of GUI Widgets. Images usually do need antialiased rendering. Pictures (as in camera shots), rotated, composited, transparent, or vector graphics -- all of these do actually need antialiased rendering. For a "free flow" of "items" on the screen, most do actually need antialiasing. Even fonts, unless you use the (very few) Microsoft/Adobe owned ones. But they're not free. (As in beer.) Also, do remember, that when screen resolutions exceed what one can see with plain eyes, then things like window borders, and the like, have to be defined in fractions of pixels (exceeding 1.0 pixels), to be usable at all. Also most of the motivation of using larger-than-the-minimum font sizes is actually due to wanting to use aliased fonts, not necessarily just "larger" fonts. (Thus erasing the virtues of a larger screen estate as such.) --- Let's just say, that if antialiasing were invented years before lcd-screens, then everything would be antialiased. Then wed have (as standard issue) the user-definable Virtual Size. Thus, there'd be a slider, where you can zoom the entire screen, as if it were just a zoom view of a piece of paper, through an SLR camera. Oh, and we _will_ get there -- very shortly. The fixed screen sizes, non-aliased window decorations, button borders, and System Fonts, all will vanish very shortly. The need is there, the means are there, all we need to wait for is the Recognition of that it's _both_ important, and possible right now.
Apr 27 2005
prev sibling parent =?ISO-8859-1?Q?Julio_C=E9sar_Carrascal_Urquijo?= writes:
We are there!!... Well, almost :)

You should really take a look at Luminocity, an experimental window 
manager being developed by the good folks at RedHat. It's best features 
are anti aliased vector widgets using Cairo, wobbly windows, zooming / 
panning on a 3D world using OpenGL.

Some preview videos and screenshots are available to download here:
http://www.gnome.org/~seth/blog/xshots


Georg Wrede wrote:
 ...
 lcd-screens, then everything would be antialiased. Then wed have (as 
 standard issue) the user-definable Virtual Size. Thus, there'd be a 
 slider, where you can zoom the entire screen, as if it were just a zoom 
 view of a piece of paper, through an SLR camera.
 
 Oh, and we _will_ get there -- very shortly. The fixed screen sizes, 
 non-aliased window decorations, button borders, and System Fonts, all 
 will vanish very shortly. The need is there, the means are there, all we 
 need to wait for is the Recognition of that it's _both_ important, and 
 possible right now.
Apr 29 2005
prev sibling parent reply "Unknown W. Brackets" <unknown simplemachines.org> writes:
Does this mean that my good friend, who is legally very blind, and can 
only see the computer screen with the magnifier on at good strength 
won't like or wish to use any of the programs one might write with this 
library, as the widgets wouldn't benefit from the system's accessability 
features?

-[Unknown]


 All controls are "windowless" - means that they are not using system 
 widgets.
Apr 26 2005
parent "Andrew Fedoniouk" <news terrainformatica.com> writes:
You can use system magnifier tool. Why not?

But accessibility in general is not only magnification.

In case of Harmonia it is going to be a special theme - high contrast and 
with bigger fonts.

HTML as a form layout tool also helps to solve accessibility issues -
its stretchable features allows to use different form factors keeping
related information close (e.g. label/control). The same
is valid for internationalization (localization) issues.

Andrew.


"Unknown W. Brackets" <unknown simplemachines.org> wrote in message 
news:d4m0j6$21lu$2 digitaldaemon.com...
 Does this mean that my good friend, who is legally very blind, and can 
 only see the computer screen with the magnifier on at good strength won't 
 like or wish to use any of the programs one might write with this library, 
 as the widgets wouldn't benefit from the system's accessability features?

 -[Unknown]


 All controls are "windowless" - means that they are not using system 
 widgets. 
Apr 26 2005
prev sibling next sibling parent reply Brad Beveridge <brad somewhere.net> writes:
Andrew Fedoniouk wrote:
 Hi, Alex,
 
 
may we get the code of the demo to see how it works?
main.d is attached to the post
Very clean code - I like it! Normally I hate programming GUI apps because the APIs suck. Your API looks very nice and clean. How are you planning on licensing Harmonia when you release it? Brad
Apr 25 2005
parent reply "Andrew Fedoniouk" <news terrainformatica.com> writes:
"How are you planning on licensing Harmonia when you release it?"

Free. Just copuple of wishe like: a) to not remove copyright notices. b) to 
place a link to our site on
derived products.


"Brad Beveridge" <brad somewhere.net> wrote in message 
news:d4jpdc$2rui$1 digitaldaemon.com...
 Andrew Fedoniouk wrote:
 Hi, Alex,


may we get the code of the demo to see how it works?
main.d is attached to the post
Very clean code - I like it! Normally I hate programming GUI apps because the APIs suck. Your API looks very nice and clean. How are you planning on licensing Harmonia when you release it? Brad
Apr 25 2005
parent reply Norbert Nemec <Norbert Nemec-online.de> writes:
Andrew Fedoniouk schrieb:
 "How are you planning on licensing Harmonia when you release it?"
 
 Free. Just copuple of wishe like: a) to not remove copyright notices. b) to 
 place a link to our site on
 derived products.
I would strongly encourage you to pick some well-known open source license. There are many software projects out there where the author had the best intentions to make the software "free", and lateron, legal issues popped up with some home-grown license. Just using some well-known license like GPL, BSD, MIT or others is the easiest way to avoid that problem. Best known is probably GPL. Anyhow, this license restricts the use of your library to projects that are open source as well. LGPL would be an alternative, if you deliberately want to allow people to use your library in proprietary projects and perhaps make money even though you don't see a penny. Both licenses are worked out very elaborately. Other licenses are simpler and less elaborate or just follow more specific needs. A good compilation of alternative licenses can be found at http://www.opensource.org/licenses/index.php A bit more commented but also more political is the compilation by GNU: http://www.gnu.org/licenses/license-list.html The wish a) is usually covered by any license. As is the general demand for recognition of you as the original author in any derived work. The wish b) is simple but also rather unclear as it stands. Many licenses try to clarify this wish in one way or another. Many do it in a way that fails to meet certain standards for free licenses. In general you don't have to become an expert on licensing issues, but it will certainly pay off to spend a little though on it now, so you and the users of your library will not have the hassle lateron and you neither throw away your own rights nor block the most flexible use of your library. Greetings, Norbert
Apr 26 2005
parent reply Dave <Dave_member pathlink.com> writes:
In article <d4lldv$1n01$1 digitaldaemon.com>, Norbert Nemec says...
Andrew Fedoniouk schrieb:
 "How are you planning on licensing Harmonia when you release it?"
 
 Free. Just copuple of wishe like: a) to not remove copyright notices. b) to 
 place a link to our site on
 derived products.
<snip> Norbert is right - it would make sense to check out the links and find a library already in use that suits your intent. However...
Best known is probably GPL. Anyhow, this license restricts the use of 
your library to projects that are open source as well. LGPL would be an 
alternative, if you deliberately want to allow people to use your 
library in proprietary projects and perhaps make money even though you 
don't see a penny. Both licenses are worked out very elaborately. Other 
licenses are simpler and less elaborate or just follow more specific needs.
Even if you license it GPL, people can still make money off of it (and you may still not see a penny), even if they follow the GPL to a 'T'. In your case, the GPL basically says that the developer of an application using your library has to make the source code for their application available to people whom they distribute the application to (w/o restriction), even if they charge a bundle for it. It also says that the people they distribute the application to must then in turn distribute the source code with the binaries (w/o restriction) and so on down the line. If the original developer charges a bundle for an application using your library, then the entity buying it is much less likely to ever re-distribute your library unless they in turn get paid something. If part of your intent is to make your library available to as many people as possible, then the GPL can actually end-up working against that because there are those who don't want to use GPL in their applications because of all of the legal B.S. associated with it (e.g.: distributing all of their expensive source code in exchange for using a GPL library for merely a part of it). The original developer of the application (or anyone buying it) using your library is not obligated at all to making your library publically available for download, giving it away free, or anything like that. You could still license your library GPL and not let anyone download it unless they paid for it. Of course, after they buy it, they can do whatever they want with the binaries and/or source code. That's the original intent of the GPL - to give people who pay for software ultimate control over what they buy. IMO, if it is your intent to share the code to this library in as non-restrictive a way as possible, pick a license that does not make it necessary for the users to distribute their source code as well. You can even say in the license something like "...if you use this library in your application, then the Harmonia library source code must be made available upon request to the user of your application...". In that way, people reluctant to use GPL'd libraries will not see a problem with using your library, yet you can bind them to a source code distribution policy for your library through the terms of your license. That will have the effect of giving your library the largest potential distribution, if that is your intent.
Apr 26 2005
next sibling parent reply "Unknown W. Brackets" <unknown simplemachines.org> writes:
I don't see how that would work.  If you sold a product or library, and 
gave it to the client under the GPL... they would have full rights to 
redistribute it.

In essence, they could then go and redsistribute it for free.  In other 
words, they could give it to other, potential clients.

Many people dual license open source projects, because of the plaugish 
nature of the GPL, like MySQL.  But, as you say, it's sometimes possible 
to go with a less restrictive license.

It's obviously important to note that you don't have to release your 
software under one and only one license.

In any case, there are actually some that describe the case of copyright 
statements.  In a project of mine, we use a license we spent some time 
approving with the lawyer, which is mostly open source but has other 
restrictions like the copyright one.  It's not always a bad idea to do this.

-[Unknown]
Apr 26 2005
next sibling parent "Dave" <Dave_member pathlink.com> writes:
"Unknown W. Brackets" <unknown simplemachines.org> wrote in message 
news:d4m0er$21lu$1 digitaldaemon.com...
I don't see how that would work.  If you sold a product or library, and 
gave it to the client under the GPL... they would have full rights to 
redistribute it.

 In essence, they could then go and redsistribute it for free.  In other 
 words, they could give it to other, potential clients.
Yes but they would be less likely to do that if they were charged for the derivitive work .. and my point was that licensing with the GPL doesn't mean someone can't charge for derivitive works. It's been done. The larger point was really that if the intent is to make the lib. as widely distributed as possible, then the GPL is not the best of OSS licenses for that.
 Many people dual license open source projects, because of the plaugish 
 nature of the GPL, like MySQL.  But, as you say, it's sometimes possible 
 to go with a less restrictive license.

 It's obviously important to note that you don't have to release your 
 software under one and only one license.

 In any case, there are actually some that describe the case of copyright 
 statements.  In a project of mine, we use a license we spent some time 
 approving with the lawyer, which is mostly open source but has other 
 restrictions like the copyright one.  It's not always a bad idea to do 
 this.
There-in lies the rub - you had to get and (presumably) pay for a lawyer for all of that licensing.. Been there, done that, and the lawyers made more money off of that project than the programmers did! <g> Agreed, though. Sometimes it is needed.
 -[Unknown] 
Apr 26 2005
prev sibling parent reply Thomas Kuehne <thomas-dloop kuehne.thisisspam.cn> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Unknown W. Brackets schrieb am Tue, 26 Apr 2005 11:14:54 -0700:
 I don't see how that would work.  If you sold a product or library, and 
 gave it to the client under the GPL... they would have full rights to 
 redistribute it.
Have a look at http://superwaba.com.br paying users: LGPL non-paying users: GPL ... Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFCbovL3w+/yD4P9tIRAq9TAJ9iyO3pbHdu/LCRzAoldvYUnEOQZwCghTCT tYtkOLiC2FATpFbkyriCP7I= =XNSx -----END PGP SIGNATURE-----
Apr 26 2005
parent "Unknown W. Brackets" <unknown simplemachines.org> writes:
That's dual licensing, as I described below.

-[Unknown]


 Unknown W. Brackets schrieb am Tue, 26 Apr 2005 11:14:54 -0700:
 
I don't see how that would work.  If you sold a product or library, and 
gave it to the client under the GPL... they would have full rights to 
redistribute it.
Have a look at http://superwaba.com.br paying users: LGPL non-paying users: GPL ... Thomas
Apr 26 2005
prev sibling parent reply Norbert Nemec <Norbert Nemec-online.de> writes:
Actually, I wanted to avoid getting into too many details, but 
obviously, that is difficult in such a topic.

As far as I can see, the the way of "abuse" of the GPL that Dave 
describes does not even go against the spirit of the GPL. In no way does 
the GPL want to prohibit making money on software. It only want to 
prevent people from selling black-box software where the buyer has no 
real control over what he bought.

Independent of that, since Andrew is working on a library, the LGPL 
might be a more adequate choice. Distributing a library as GPL is indeed 
rather restrictive and only makes sense if you want to make a political 
statement (like GNU readline) or have bigger plans with your software 
(like dual-licensing it for commercial users, as Trolltech does it with 
Qt). If the main intention is to have a *free* library, LGPL is the way 
to go.



Dave schrieb:
 In article <d4lldv$1n01$1 digitaldaemon.com>, Norbert Nemec says...
 
Andrew Fedoniouk schrieb:

"How are you planning on licensing Harmonia when you release it?"

Free. Just copuple of wishe like: a) to not remove copyright notices. b) to 
place a link to our site on
derived products.
<snip> Norbert is right - it would make sense to check out the links and find a library already in use that suits your intent. However...
Best known is probably GPL. Anyhow, this license restricts the use of 
your library to projects that are open source as well. LGPL would be an 
alternative, if you deliberately want to allow people to use your 
library in proprietary projects and perhaps make money even though you 
don't see a penny. Both licenses are worked out very elaborately. Other 
licenses are simpler and less elaborate or just follow more specific needs.
Even if you license it GPL, people can still make money off of it (and you may still not see a penny), even if they follow the GPL to a 'T'. In your case, the GPL basically says that the developer of an application using your library has to make the source code for their application available to people whom they distribute the application to (w/o restriction), even if they charge a bundle for it. It also says that the people they distribute the application to must then in turn distribute the source code with the binaries (w/o restriction) and so on down the line. If the original developer charges a bundle for an application using your library, then the entity buying it is much less likely to ever re-distribute your library unless they in turn get paid something. If part of your intent is to make your library available to as many people as possible, then the GPL can actually end-up working against that because there are those who don't want to use GPL in their applications because of all of the legal B.S. associated with it (e.g.: distributing all of their expensive source code in exchange for using a GPL library for merely a part of it). The original developer of the application (or anyone buying it) using your library is not obligated at all to making your library publically available for download, giving it away free, or anything like that. You could still license your library GPL and not let anyone download it unless they paid for it. Of course, after they buy it, they can do whatever they want with the binaries and/or source code. That's the original intent of the GPL - to give people who pay for software ultimate control over what they buy. IMO, if it is your intent to share the code to this library in as non-restrictive a way as possible, pick a license that does not make it necessary for the users to distribute their source code as well. You can even say in the license something like "...if you use this library in your application, then the Harmonia library source code must be made available upon request to the user of your application...". In that way, people reluctant to use GPL'd libraries will not see a problem with using your library, yet you can bind them to a source code distribution policy for your library through the terms of your license. That will have the effect of giving your library the largest potential distribution, if that is your intent.
Apr 26 2005
parent reply Mike Parker <aldacron71 yahoo.com> writes:
Norbert Nemec wrote:

 Independent of that, since Andrew is working on a library, the LGPL 
 might be a more adequate choice. Distributing a library as GPL is indeed 
 rather restrictive and only makes sense if you want to make a political 
 statement (like GNU readline) or have bigger plans with your software 
 (like dual-licensing it for commercial users, as Trolltech does it with 
 Qt). If the main intention is to have a *free* library, LGPL is the way 
 to go.
Unfortunately, until shared library support gets baked into D on all supported platforms, LGPL will be just as restrictive as GPL - assuming one follows the common interpretation of the LGPL that linking statically constitutes a derivative work and requires the client app to be open source, while linking dynamically allows the client app to stay closed.
Apr 26 2005
next sibling parent Brad Beveridge <brad somewhere.net> writes:
Mike Parker wrote:
 Norbert Nemec wrote:
 
 Independent of that, since Andrew is working on a library, the LGPL 
 might be a more adequate choice. Distributing a library as GPL is 
 indeed rather restrictive and only makes sense if you want to make a 
 political statement (like GNU readline) or have bigger plans with your 
 software (like dual-licensing it for commercial users, as Trolltech 
 does it with Qt). If the main intention is to have a *free* library, 
 LGPL is the way to go.
Unfortunately, until shared library support gets baked into D on all supported platforms, LGPL will be just as restrictive as GPL - assuming one follows the common interpretation of the LGPL that linking statically constitutes a derivative work and requires the client app to be open source, while linking dynamically allows the client app to stay closed.
Also, I would tend to think that the LGPL line will be even more blurred with D. Most of the people I know say "include the headers, link to the library and you're fine", not easy to do with D - unless you want to create thin D files that are header-like. Brad
Apr 26 2005
prev sibling parent Norbert Nemec <Norbert Nemec-online.de> writes:
Mike Parker schrieb:
 Unfortunately, until shared library support gets baked into D on all 
 supported platforms, LGPL will be just as restrictive as GPL - assuming 
 one follows the common interpretation of the LGPL that linking 
 statically constitutes a derivative work and requires the client app to 
 be open source, while linking dynamically allows the client app to stay 
 closed.
Guess, that's a problem of the "common interpretation" of LGPL. It is true, that many people draw the line at statically vs. dynamically linking, but that is problematic in many languages and I don't think that interpretation has been tested in court yet. (Even the GPL itself has only recently been tested for the first time.) I guess, what should be possible in any case is to add a line to the LGPL for your code that explicitely allows static linking. Anyhow: GPL has indeed often had compatibility issues with other licenses, so it might be an idea to choose something else. Maybe something rather modern like the Mozilla license?
Apr 27 2005
prev sibling parent reply "Charlie" <charles jwavro.com> writes:
What does this mean / do  :

      this ~= (splitter = new Splitter(true));

?
"Andrew Fedoniouk" <news terrainformatica.com> wrote in message
news:d4jon5$2r9u$1 digitaldaemon.com...
 Hi, Alex,

 may we get the code of the demo to see how it works?
main.d is attached to the post
Apr 25 2005
parent reply "Alexander Panek" <alexander.panek brainsware.org> writes:
On Tue, 26 Apr 2005 00:07:13 +0200, Charlie <charles jwavro.com> wrote:

 What does this mean / do  :

       this ~= (splitter = new Splitter(true));

 ?
 "Andrew Fedoniouk" <news terrainformatica.com> wrote in message
 news:d4jon5$2r9u$1 digitaldaemon.com...
 Hi, Alex,

 may we get the code of the demo to see how it works?
main.d is attached to the post
I think it just adds the seperator to the big (list-)box in the left? ("this ~= uiObject" seems to add an object to the window) Alex -- huh? did you say something? :o
Apr 25 2005
next sibling parent "Charlie" <charles jwavro.com> writes:
Ahh ok, calling Window's opCatAssign , just looked a little scary at first
:).

Charlie


"Alexander Panek" <alexander.panek brainsware.org> wrote in message
news:op.sps6vqyly2yy8c chello080109082145.3.15.vie.surfer.at...
 On Tue, 26 Apr 2005 00:07:13 +0200, Charlie <charles jwavro.com> wrote:

 What does this mean / do  :

       this ~= (splitter = new Splitter(true));

 ?
 "Andrew Fedoniouk" <news terrainformatica.com> wrote in message
 news:d4jon5$2r9u$1 digitaldaemon.com...
 Hi, Alex,

 may we get the code of the demo to see how it works?
main.d is attached to the post
I think it just adds the seperator to the big (list-)box in the left? ("this ~= uiObject" seems to add an object to the window) Alex -- huh? did you say something? :o
Apr 25 2005
prev sibling parent "Andrew Fedoniouk" <news terrainformatica.com> writes:
this ~= (splitter = new Splitter(true));
is a:

splitter = new Splitter(true); // adds vertical splitter - "resizeable" 
divider between two widgets
this ~= splitter; // adds the splitter to the container - 'this' is window 
instance.

There are three main classes:

Widget - rectangular entity capable to receive events.
Widgets: Widget -  container of widgets, has opCatAssign (~=), opApply & co.
Window: Widgets - OS window (frame), widget container by itself.

All other things are just derivations from these "three W".
E.g. Splitter : (is a) Widgets.

Andrew.

"Alexander Panek" <alexander.panek brainsware.org> wrote in message 
news:op.sps6vqyly2yy8c chello080109082145.3.15.vie.surfer.at...
 On Tue, 26 Apr 2005 00:07:13 +0200, Charlie <charles jwavro.com> wrote:

 What does this mean / do  :

       this ~= (splitter = new Splitter(true));

 ?
 "Andrew Fedoniouk" <news terrainformatica.com> wrote in message
 news:d4jon5$2r9u$1 digitaldaemon.com...
 Hi, Alex,

 may we get the code of the demo to see how it works?
main.d is attached to the post
I think it just adds the seperator to the big (list-)box in the left? ("this ~= uiObject" seems to add an object to the window) Alex -- huh? did you say something? :o
Apr 25 2005
prev sibling next sibling parent "Joey Peters" <squirrel nidhogg.com> writes:
This is looking really slick. Good work.

"Andrew Fedoniouk" <news terrainformatica.com> schreef in bericht 
news:d4jknu$2n39$1 digitaldaemon.com...
I second on that :)

 Teasing :) demo is here:
 http://terrainformatica.com/screenshots/HarmoniaDemo.zip
 (e.g. try to move splitter)

 After loading and starting you should see this picture:
 http://terrainformatica.com/screenshots/harmonia.png

 Andrew.


 
Apr 25 2005
prev sibling next sibling parent reply =?ISO-8859-1?Q?Jari-Matti_M=E4kel=E4?= <jmjmak utu.fi.no.sp.am> writes:
Andrew Fedoniouk wrote:
 After loading and starting you should see this picture:
 http://terrainformatica.com/screenshots/harmonia.png
Too bad I'm not running Windows, looks pretty neat though. :) I also like the idea of separating the GUI structure from the source code. One question: wouldn't it be an important goal to support XTHML or XML instead of this old HTML-stuff before anyone starts using Harmonia? XML really did the same with markup language parsing as D did with c-stylish programming language parsing. Jari-Matti
Apr 25 2005
parent "Andrew Fedoniouk" <news terrainformatica.com> writes:
 Too bad I'm not running Windows, looks pretty neat though. :) I also
 like the idea of separating the GUI structure from the source code.
It will be a port to Linux and Mac.
 One question: wouldn't it be an important goal to support XTHML
 or XML instead of this old HTML-stuff before anyone starts using
 Harmonia? XML really did the same with markup language parsing as D
 did with c-stylish programming language parsing.
In fact parser supports XML only with minor SGMLism: attribute values which comply to SGML TOKEN production can be used without "". So <td colspan=1> and <td colspan="1"> are equivalent. If you don't want first case then you can use second case only. Anyway it is not strictly speaking HTML - very close - yes, but not exactly. Intention is to support HTML 3.2 with addons suitable for form layout e.g. vertical alignment which standard HTML up to propsed XHTML 2.0 does not have. Andrew. "Jari-Matti Mäkelä" <jmjmak utu.fi.no.sp.am> wrote in message news:d4jqq7$2t8n$1 digitaldaemon.com...
 Andrew Fedoniouk wrote:
 After loading and starting you should see this picture:
 http://terrainformatica.com/screenshots/harmonia.png
Too bad I'm not running Windows, looks pretty neat though. :) I also like the idea of separating the GUI structure from the source code. One question: wouldn't it be an important goal to support XTHML or XML instead of this old HTML-stuff before anyone starts using Harmonia? XML really did the same with markup language parsing as D did with c-stylish programming language parsing. Jari-Matti
Apr 25 2005
prev sibling next sibling parent reply bobef <bobef paintballforce.com> writes:
No Tab support? I mean keyboard works fine if I have focus on item but 
can I switch between them with the keyboard? Also is there some level of 
customization available for Harmonia? I mean I don't like this orange 
look and these gradient buttons and stuff. Also I'm not sure about the 
tabs... Can I change some of these?

Andrew Fedoniouk wrote:
 I second on that :)
 
 Teasing :) demo is here:
 http://terrainformatica.com/screenshots/HarmoniaDemo.zip
 (e.g. try to move splitter)
 
 After loading and starting you should see this picture:
 http://terrainformatica.com/screenshots/harmonia.png
 
 Andrew.
 
 
 
Apr 26 2005
parent "Andrew Fedoniouk" <news terrainformatica.com> writes:
The code is there. Not connected yet.
The same for acceleratros.


"bobef" <bobef paintballforce.com> wrote in message 
news:d4l9mr$1ah8$1 digitaldaemon.com...
 No Tab support? I mean keyboard works fine if I have focus on item but can 
 I switch between them with the keyboard? Also is there some level of 
 customization available for Harmonia? I mean I don't like this orange look 
 and these gradient buttons and stuff. Also I'm not sure about the tabs... 
 Can I change some of these?

 Andrew Fedoniouk wrote:
 I second on that :)

 Teasing :) demo is here:
 http://terrainformatica.com/screenshots/HarmoniaDemo.zip
 (e.g. try to move splitter)

 After loading and starting you should see this picture:
 http://terrainformatica.com/screenshots/harmonia.png

 Andrew.

 
Apr 26 2005
prev sibling parent reply Dejan Lekic <leka entropy.tmok.com> writes:
One, single (the most important to me) question: Does it work on GNU/Linux
and/or MacOSX?

-- 
...........
Dejan Lekic
  http://dejan.lekic.org
  
Apr 26 2005
parent reply "Andrew Fedoniouk" <news terrainformatica.com> writes:
"GNU/Linux and/or MacOSX?"

Not yet but planned. Porting
was in my mind from the very beginning.
In fact choosen architecture (not to use system
controls/widgets at all, as in SWING) should follow
to high portability.

I will appreciate if anybody can take care Linux and Mac OS ports.
I think it is a right time now to start with them.

Andrew.

"Dejan Lekic" <leka entropy.tmok.com> wrote in message 
news:d4lcnb$1dkf$1 digitaldaemon.com...
 One, single (the most important to me) question: Does it work on GNU/Linux
 and/or MacOSX?

 -- 
 ...........
 Dejan Lekic
  http://dejan.lekic.org
 
Apr 26 2005
parent reply Benjamin Herr <ben 0x539.de> writes:
Andrew Fedoniouk wrote:
 In fact choosen architecture (not to use system
 controls/widgets at all, as in SWING) should follow
 to high portability.
But Swing also is ugly and slow and looks out of place on every platform, so maybe you might want to choose another role model ;) --ben
Apr 27 2005
parent "Andrew Fedoniouk" <news terrainformatica.com> writes:
 But Swing also is ugly and slow and looks out of place on every
 platform, so maybe you might want to choose another role model ;)
I know why Swing is slow. D and differnet GUI architecture allow to avoid this. "looks out of place on every platform" Agreed. In Harmonia I am going to create harmonia.themes.system.d theme which will use on e.g. WinXP calls to uxtheme.dll to render basic widgets: buttons, scrollbars, etc. But again all widgets will be "harmonicas" inside. Andrew. "Benjamin Herr" <ben 0x539.de> wrote in message news:d4on3p$1mfg$1 digitaldaemon.com...
 Andrew Fedoniouk wrote:
 In fact choosen architecture (not to use system
 controls/widgets at all, as in SWING) should follow
 to high portability.
But Swing also is ugly and slow and looks out of place on every platform, so maybe you might want to choose another role model ;) --ben
Apr 27 2005