From: Onur T. <onu...@gm...> - 2006-02-24 21:43:47
|
Good news everyone! I have browsed the sourcecode of jEdit and figured out how to enable LCD Antialiasing in java 6 (mustang) Now step by step: 1- in java 6 there is a new AWT class called SplashScreen. this class conflicts with jEdit splash screen. Before compiling with java6 jdk you have to change these lines in order to sovle nameconflict: org/gjt/sp/jedit/GUIUtilities.java: line #1494: find: splash =3D new SplashScreen(); replace: splash =3D new org.gjt.sp.jedit.gui.SplashScreen(); line #1507: find: private static SplashScreen splash; replace: private static org.gjt.sp.jedit.gui.SplashScreen splash; (If someone has a better method please tell, this is my first java hacking) 2- we have to explicitly tell jEdit to use LCD antialiasing. somehow using DEFAULT mode I couldnt tell the JeditTextArea to use LCD antialising. (this change will make Smooth Fonts option useless.) org/gjt/sp/jedit/textarea/TextAreaPainter.java: line #844-854: Comment out the following lines if(antiAlias) { //hints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); hints.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); hints.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); } else { hints.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); hints.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); } after #854 insert this: hints.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB); around #864: (this explicitly tells to use HRGB LCD antialias and uses new (1.6) font render context) find: fontRenderContext =3D new FontRenderContext(null,antiAlias,fracFontMetrics); replace: fontRenderContext =3D new FontRenderContext(null,RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB, fracFontMetrics ? RenderingHints.VALUE_FRACTIONALMETRICS_ON : RenderingHints.VALUE_FRACTIONALMETRICS_OFF= ); and compile!. voila!!! you'll need jdk1.6 from sun to succesfully compile t= his. if you face a problem, please tell... now my intention is to create an option (dropdown?) in option panel to assign lcd antialias to options. my question is, how can I make this into a patch? does the developers except patches from people etc. or is this patch useful? thanks in advance, onur |
From: Alan E. <ala...@gm...> - 2006-02-24 23:25:30
|
Hi Omar, thanks for your input! On 2/24/06, Onur Turgay <onu...@gm...> wrote: > Good news everyone! > > I have browsed the sourcecode of jEdit and figured out how to enable > LCD Antialiasing in java 6 (mustang) > > Now step by step: > > 1- in java 6 there is a new AWT class called SplashScreen. this class > conflicts with jEdit splash screen. Before compiling with java6 jdk > you have to change these lines in order to sovle nameconflict: > > org/gjt/sp/jedit/GUIUtilities.java: I will just get rid of all the import package.* imports and replace them with more specific ones. > > line #1494: > find: splash =3D new SplashScreen(); > replace: splash =3D new org.gjt.sp.jedit.gui.SplashScreen(); > > line #1507: > find: private static SplashScreen splash; > replace: private static org.gjt.sp.jedit.gui.SplashScreen splash; > > (If someone has a better method please tell, this is my first java hackin= g) > > 2- we have to explicitly tell jEdit to use LCD antialiasing. somehow > using DEFAULT mode I couldnt tell the JeditTextArea to use LCD > antialising. (this change will make Smooth Fonts option useless.) > > org/gjt/sp/jedit/textarea/TextAreaPainter.java: > > line #844-854: Comment out the following lines > > if(antiAlias) > { > //hints.put(RenderingHints.KEY_RENDERING, > RenderingHints.VALUE_RENDER_QUALITY); > hints.put(RenderingHints.KEY_ANTIALIASING, > RenderingHints.VALUE_ANTIALIAS_ON); > hints.put(RenderingHints.KEY_TEXT_ANTIALIASING, > RenderingHints.VALUE_TEXT_ANTIALIAS_ON); > } > else > { > hints.put(RenderingHints.KEY_ANTIALIASING, > RenderingHints.VALUE_ANTIALIAS_OFF); I think we would need to have ANOTHER antialias mode for 1.6 so that we do not break the 1.5 version - I'm using that one and it looks great on linux, in both 1.5 and 1.6. Are you saying that when you use antialiasing options on in 1.6 with windows, that the RenderingHints.VALUE_ANTIALIAS_ON is ignored? If so, that sounds more like a bug in the JDK to me. If we put in a reference to a JDK 1.6 constant, jedit will only build on 1.6, so putting this into the core is probably not going to happen. I will ponder on how to make this an option in jedit - perhaps by running a beanshell script or something. |
From: Onur T. <onu...@gm...> - 2006-02-25 00:12:52
|
no Alan its not ignored, but VALUE_ANTIALIAS_ON implies the classic antialiasing method in Java. LCD mode must be explicitly specified unless the operating system settings include ClearType (or any other LCD antialiasing scheme). all Swing components in Jedit inherits LCD antialiasing scheme from windows, except for JEditTextArea and Gutter. I thought this was because of explicit setting og VALUE_TEXT_ANTIALIAS_ON and OFF and replaced these with _DEFAULT but that didnt work also (this can be due to a bug in 1.6 because font2d didnt show antialiasing in DEFAULT also). So I had to specify LCD_HRGB explicitly to make it work. I think you can put a setting in options panel which shows a dropdown box which allows choosing between normal and lcd antialiasing (if jre=3D=3D1.6). If I have time I can create a patch for it but I am not used to java a lot and sometimes I get confused in all these classes :) Thanks for the great editor. If I can be of any help please let me know. Onur Turgay. On 2/25/06, Alan Ezust <ala...@gm...> wrote: > Hi Omar, thanks for your input! > > On 2/24/06, Onur Turgay <onu...@gm...> wrote: > > Good news everyone! > > > > I have browsed the sourcecode of jEdit and figured out how to enable > > LCD Antialiasing in java 6 (mustang) > > > > Now step by step: > > > > 1- in java 6 there is a new AWT class called SplashScreen. this class > > conflicts with jEdit splash screen. Before compiling with java6 jdk > > you have to change these lines in order to sovle nameconflict: > > > > org/gjt/sp/jedit/GUIUtilities.java: > > I will just get rid of all the import package.* imports > and replace them with more specific ones. > > > > > > > line #1494: > > find: splash =3D new SplashScreen(); > > replace: splash =3D new org.gjt.sp.jedit.gui.SplashScreen(); > > > > line #1507: > > find: private static SplashScreen splash; > > replace: private static org.gjt.sp.jedit.gui.SplashScreen splash; > > > > (If someone has a better method please tell, this is my first java hack= ing) > > > > 2- we have to explicitly tell jEdit to use LCD antialiasing. somehow > > using DEFAULT mode I couldnt tell the JeditTextArea to use LCD > > antialising. (this change will make Smooth Fonts option useless.) > > > > org/gjt/sp/jedit/textarea/TextAreaPainter.java: > > > > line #844-854: Comment out the following lines > > > > if(antiAlias) > > { > > //hints.put(RenderingHints.KEY_RENDERING, > > RenderingHints.VALUE_RENDER_QUALITY); > > hints.put(RenderingHints.KEY_ANTIALIASING, > > RenderingHints.VALUE_ANTIALIAS_ON); > > hints.put(RenderingHints.KEY_TEXT_ANTIALIASING, > > RenderingHints.VALUE_TEXT_ANTIALIAS_ON); > > } > > else > > { > > hints.put(RenderingHints.KEY_ANTIALIASING, > > RenderingHints.VALUE_ANTIALIAS_OFF); > > I think we would need to have ANOTHER antialias mode for 1.6 so that > we do not break the 1.5 version - I'm using that one and it looks > great on linux, in both 1.5 and 1.6. > > Are you saying that when you use antialiasing options on in 1.6 with > windows, that the RenderingHints.VALUE_ANTIALIAS_ON is ignored? If so, > that sounds more like a bug in the JDK to me. > > If we put in a reference to a JDK 1.6 constant, jedit will only build > on 1.6, so putting this into the core is probably not going to happen. > > I will ponder on how to make this an option in jedit - perhaps by > running a beanshell script or something. > |
From: Slava P. <sl...@je...> - 2006-02-25 01:20:28
|
> I will just get rid of all the import package.* imports > and replace them with more specific ones. Sounds good. > I think we would need to have ANOTHER antialias mode for 1.6 so that > we do not break the 1.5 version - I'm using that one and it looks > great on linux, in both 1.5 and 1.6. Add a combo box to Global Options->Text Area, labelled "Anti-aliasing mode", with possible values "Off", "Standard", "Sub-pixel (LCD)". > If we put in a reference to a JDK 1.6 constant, jedit will only build > on 1.6, so putting this into the core is probably not going to happen. Just use reflection. Slava |
From: Alan E. <ala...@gm...> - 2006-02-25 03:04:17
|
Done. Committed. My eyes can't tell any difference between these two antialias modes, so please try it out and let me know if you can tell. On 2/24/06, Slava Pestov <sl...@je...> wrote: > > I will just get rid of all the import package.* imports > > and replace them with more specific ones. > > Sounds good. > > I think we would need to have ANOTHER antialias mode for 1.6 so that > > we do not break the 1.5 version - I'm using that one and it looks > > great on linux, in both 1.5 and 1.6. > > Add a combo box to Global Options->Text Area, labelled "Anti-aliasing > mode", with possible values "Off", "Standard", "Sub-pixel (LCD)". > > > If we put in a reference to a JDK 1.6 constant, jedit will only build > > on 1.6, so putting this into the core is probably not going to happen. > > Just use reflection. |
From: Onur T. <onu...@gm...> - 2006-02-25 07:07:45
|
I will try thanks. the best way to tell difference is that. in normal antialiasing mode only shades of grey (for black-white setting) is used. in sub pixel antialiasing different colors (blue green red) also used. u can use a magnifing glass utility to check. I am downloading jar now. I'll let you know. On 2/25/06, Alan Ezust <ala...@gm...> wrote: > Done. Committed. > > My eyes can't tell any difference between these two antialias modes, > so please try it out and let me know if you can tell. > > > On 2/24/06, Slava Pestov <sl...@je...> wrote: > > > I will just get rid of all the import package.* imports > > > and replace them with more specific ones. > > > > Sounds good. > > > I think we would need to have ANOTHER antialias mode for 1.6 so that > > > we do not break the 1.5 version - I'm using that one and it looks > > > great on linux, in both 1.5 and 1.6. > > > > Add a combo box to Global Options->Text Area, labelled "Anti-aliasing > > mode", with possible values "Off", "Standard", "Sub-pixel (LCD)". > > > > > If we put in a reference to a JDK 1.6 constant, jedit will only build > > > on 1.6, so putting this into the core is probably not going to happen= . > > > > Just use reflection. > |
From: Alan E. <ala...@gm...> - 2006-02-25 08:02:15
|
thanks. I am also trying to figure out how to get antialiasing for the other textareas (such as the file system browser, the structure browser, etc). Do I need to modify each plugin individually, or is there a way of setting it globally? On 2/24/06, Onur Turgay <onu...@gm...> wrote: > I will try thanks. > > the best way to tell difference is that. in normal antialiasing mode > only shades of grey (for black-white setting) is used. in sub pixel > antialiasing different colors (blue green red) also used. u can use a > magnifing glass utility to check. > > I am downloading jar now. I'll let you know. > > > > On 2/25/06, Alan Ezust <ala...@gm...> wrote: > > Done. Committed. > > > > My eyes can't tell any difference between these two antialias modes, > > so please try it out and let me know if you can tell. > > > > > > On 2/24/06, Slava Pestov <sl...@je...> wrote: > > > > I will just get rid of all the import package.* imports > > > > and replace them with more specific ones. > > > > > > Sounds good. > > > > I think we would need to have ANOTHER antialias mode for 1.6 so tha= t > > > > we do not break the 1.5 version - I'm using that one and it looks > > > > great on linux, in both 1.5 and 1.6. > > > > > > Add a combo box to Global Options->Text Area, labelled "Anti-aliasing > > > mode", with possible values "Off", "Standard", "Sub-pixel (LCD)". > > > > > > > If we put in a reference to a JDK 1.6 constant, jedit will only bui= ld > > > > on 1.6, so putting this into the core is probably not going to happ= en. > > > > > > Just use reflection. > > > |
From: Onur T. <onu...@gm...> - 2006-02-25 08:15:10
|
they inherit from operating system if cleartype (on windows) is enabled. desktop properties -> appearance -> effects -> method to smooth fonts: clear type when I enable this setting all other swing components inherit LCD antialiasing. just textarea wasn't. it was ebcause of TEXTALIAS_ON and OFF properties set explicitly. I dont know the way to set all of them to LCD antialiasing. it maY BE something like setlookandfeeld. if you didnt do, can you put an option to use system default? most swing progams inherit cleartype automagically. btw I couldnt download jedit.jar. can you mail it to me? I love open source, I love jEdit. keep up the great work. Onur Turgay. On 2/25/06, Alan Ezust <ala...@gm...> wrote: > thanks. I am also trying to figure out how to get antialiasing for the > other textareas (such as the file system browser, the structure > browser, etc). Do I need to modify each plugin individually, or is > there a way of setting it globally? > > > > On 2/24/06, Onur Turgay <onu...@gm...> wrote: > > I will try thanks. > > > > the best way to tell difference is that. in normal antialiasing mode > > only shades of grey (for black-white setting) is used. in sub pixel > > antialiasing different colors (blue green red) also used. u can use a > > magnifing glass utility to check. > > > > I am downloading jar now. I'll let you know. > > > > > > > > On 2/25/06, Alan Ezust <ala...@gm...> wrote: > > > Done. Committed. > > > > > > My eyes can't tell any difference between these two antialias modes, > > > so please try it out and let me know if you can tell. > > > > > > > > > On 2/24/06, Slava Pestov <sl...@je...> wrote: > > > > > I will just get rid of all the import package.* imports > > > > > and replace them with more specific ones. > > > > > > > > Sounds good. > > > > > I think we would need to have ANOTHER antialias mode for 1.6 so t= hat > > > > > we do not break the 1.5 version - I'm using that one and it looks > > > > > great on linux, in both 1.5 and 1.6. > > > > > > > > Add a combo box to Global Options->Text Area, labelled "Anti-aliasi= ng > > > > mode", with possible values "Off", "Standard", "Sub-pixel (LCD)". > > > > > > > > > If we put in a reference to a JDK 1.6 constant, jedit will only b= uild > > > > > on 1.6, so putting this into the core is probably not going to ha= ppen. > > > > > > > > Just use reflection. > > > > > > |
From: Alan E. <ala...@gm...> - 2006-02-25 08:27:48
|
On 2/25/06, Onur Turgay <onu...@gm...> wrote: > they inherit from operating system if cleartype (on windows) is enabled. True, in Windows it all looks great. Actually, what I'm wondering about is for the other Text containing widgets under Linux. With linux, I see antialiased fonts on the buttons BUT NOT the menus. For the tree views of all plugins, I see ugly non-antialiased fonts too. PS: I can't e-mail you a file that big. try this: http://lazarus.oddiofile.com:81/workspace/jEdit/jedit.jar |
From: Onur T. <onu...@gm...> - 2006-02-25 10:06:35
|
hi alan, It didn't work for me. it makes standart antialiasing. the trick is when you want to make LCD antialiasing you musn't set KEY_ANTIALIASING =3D VALUE_ANTIALIAS_ON alongside with KEY_TEXT_ANTIALIASING =3D VALUE_TEXT_ANTIALIAS_LCD_HRGB ... just setting KEY_TEXT_ANTIALIASING =3D VALUE_TEXT_ANTIALIAS_LCD_HRGB is enough. if you set VALUE_ANTIALIAS_ON (warning: not TEXT_ANTIALIAS_ON) it overrides lcd antialiasing with classic antialising. this may be a bug or something I didnt look into javadoc. On 2/25/06, Alan Ezust <ala...@gm...> wrote: > On 2/25/06, Onur Turgay <onu...@gm...> wrote: > > they inherit from operating system if cleartype (on windows) is enabled= . > > True, in Windows it all looks great. > > Actually, what I'm wondering about is for the other Text containing > widgets under Linux. > > With linux, I see antialiased fonts on the buttons BUT NOT the menus. > For the tree views of all plugins, I see ugly non-antialiased fonts > too. > > PS: I can't e-mail you a file that big. try this: > http://lazarus.oddiofile.com:81/workspace/jEdit/jedit.jar > |