Re: Can JavaFX do CAD?

2013-07-24 Thread Joseph Andresen
I believe JavaFx could do cad, first step would be to provide a simple data set 
and boil it down to the best render paths in JavaFX. 

As far as I know it shouldn't be any worse than swing with the slowest render 
paths.

-Joe

On Jul 23, 2013, at 8:47 AM, Chris Gay chris.gay5...@gmail.com wrote:

 Hello all.
 
 Please could someone advise if it is even feasible for me to consider 
 re-factoring the following Swing application, so that it becomes a JavaFX 
 one. From trying to read about JavaFX, I get the feeling that Oracle never 
 intended Java FX for the purpose I need.
 
 I have a large Java Swing desktop CAD application which makes heavy use of 
 the Java 2D API, and concurrency. It is a Menu Bar driven application, with a 
 Toolbar for Tools, and a few buttons, but 99% of the user activity concerns 
 selecting and manipulating vector graphical objects in a traditional manner 
 using one Tool at a time (think Inkscape or LibreOffice Drawing apps). The 
 application has multiple drawings open at the same time (but only one is 
 visible), and each Drawing contains it's own Drawing and Processing threads 
 (in addition to sharing the Main and Event Threads), which keeps the Event 
 Thread lively. Each Drawing contains an ArrayList, acting as a Display List 
 of all graphical objects, and each graphical object can be a tree structure. 
 In many cases I use simple iteration instead of Iterators, simply for speed, 
 and to avoid garbage. The graphical objects are lightweight, in that they do 
 not carry references to events and handlers. All they carry is their basic 
 geometric data and properties, a bounding box which they can lend as Read 
 Only, and a boolean flag to indicate selection, which means there can be 
 millions of the objects, with a minimum memory footprint. To support them, 
 there are many hundreds of methods, which the tools interact with. There can 
 be multiple Drawing Windows active on a single drawing, where each Window is 
 backed up by an offscreen image, which handles the zoom and sliding buffer 
 behaviour for fast scrolling, to allow rapid bit-blt's to the actual window. 
 Lastly, the user manipulates the Drawing (Display List), using one of many 
 Tools, where the active Tool receives events from the event queue, and then 
 manipulates selected and/or unselected graphical objects, by using XOR Mode 
 graphics onto the offscreen buffer, generally using callbacks.
 
 The system is fast and very responsive on large data sets, but what I do not 
 know is whether JavaFX will help me make a better implementation, or whether 
 it will fight me all the way. With JavaFX claiming hardware acceleration, I 
 do not understand whether it depends on transferring the very large data sets 
 into graphics hardware to render, and what happens if the hardware cannot 
 cope. So far, I have found little in the way of discussions that help me get 
 a mental picture of how JavaFX is intended to work. Should I stick with Swing?
 
 Regards,
 
 Chris
 


Re: Fwd: API Change Proposal - Re: MSAA and Scene anti aliasing

2013-07-24 Thread Chien Yang

Hi Scott,

   This isn't in the plan for JavaFX 8.  I'm not sure how feasible it 
is to access this information from different GPU vendors and across 
platforms (desktop and embedded).


- Chien

On 7/23/2013 6:33 PM, Scott Palmer wrote:

copying the list...

-- Forwarded message --
From: Scott Palmer swpal...@gmail.com
Date: Tue, Jul 23, 2013 at 9:33 PM
Subject: Re: API Change Proposal - Re: MSAA and Scene anti aliasing
To: Chien Yang chien.y...@oracle.com


Is DEFAULT intended to defer to the settings in the system graphics drivers
(e.g. nVidia control panel) such that the precise settings used are defined
outside the scope of JavaFX and could vary between otherwise identical
systems based on the settings the user has selected somewhere else?

If so perhaps something like SYSTEM, USER, or UNSPECIFIED ,make sense.


On Tue, Jul 23, 2013 at 9:14 PM, Chien Yang chien.y...@oracle.com wrote:


Well, I personally think that might be over stretching. :-)  FAST and
NICEST will behave no difference on a platform that can't support AA. For
such platform we will have to cover in the API specification.

- Chien


On 7/23/2013 2:37 PM, Richard Bair wrote:


Actually that is exactly what I was hoping DEFAULT would mean -- some
kind of typical option for the particular platform (maybe even disabled on
some!).

Richard

On Jul 23, 2013, at 1:41 PM, Felix Bembrick felix.bembr...@gmail.com
wrote:

  I am not sure I like the name of the value DEFAULT.  To me default

implies some kind of typical option for the particular platform which
could conceivably be very different on each platform.  For example, on my
Windows super-computer with ultra fast GPU the default would logically
be
something like 16x whereas on my iPhone I would expect the default to be
using only 2x.  The comment for DEFAULT implies that it's really more of
a
BALANCED or MODERATE setting that would have the same characteristics on
each platform.


On 24 July 2013 06:29, Chien Yang chien.y...@oracle.com wrote:

  Hi all,

 We appreciate all the feedback you have contributed to this topic.
After listening to the feedback and an internal discussion, we would
like
to propose a minor change to the API for supporting scene
anti-aliasing. We
intentionally choose not to expose the number of samples and techniques
used in this release, but this doesn't preclude future addition when the
time is right for more options. This change will be tracked by RT-31878
(
https://javafx-jira.kenai.com/browse/RT-31878https://**
javafx-jira.kenai.com/browse/**RT-31878https://javafx-jira.kenai.com/browse/RT-31878
):

Anti-aliasing API Change Proposal:

Constructors remove:
public Scene(Parent root, double width, double height, boolean
depthBuffer, boolean antiAliasing)
public SubScene(Parent root, double width, double height, boolean
depthBuffer, boolean antiAliasing)

Constructor add:
public Scene(Parent root, double width, double height, boolean
depthBuffer, SceneAntiAliasing antiAliasing)
public SubScene(Parent root, double width, double height, boolean
depthBuffer, SceneAntiAliasing antiAliasing)

Note:The antiAliasing argument will be used if the underlying graphics
driver has anti-aliasing support.

Where SceneAntiAliasing is an enum with the following entries at the
moment:

public enum SceneAntiAliasing {
 DISABLED, // disables anti-aliasing
 DEFAULT, // enables anti-aliasing using a default system setting
available that balances speed and quality
 FASTEST, // enables anti-aliasing using minimum system setting
available that results in better frame rate
 NICEST // enables anti-aliasing using maximum system setting
available
that results in best visual quality
}

Thanks,
- Chien






Re: Can JavaFX do CAD?

2013-07-24 Thread Daniel Zwolenski
I think the below comment makes it sound more straight forward than it is. In 
building a diagramming tool there is much more to it than just the rendering 
frame rate. 

This topic about CAD-like apps and 'performant' highly visual jfx apps in 
general has been raised here and in the forums before, without any clear 
resolution. Chris, the closest we've come to an answer is that it certainly 
isn't straight forward to do and there are many areas where the intuitive 
solution (especially for us ex-swing devs) gives results that are horribly 
unusable. 

There *might* be a way to get jfx to do this but there's no clear guidelines on 
how to achieve a 'performant' result. This is why I +1'd your question and 
added areas I feel need clarification from the jfx team. Unfortunately I'm not 
entirely sure they know the answers themselves and it generally comes back as a 
'you try it and let us know how it goes'. 

The last time we raised a similar topic it led to an attempt to build a Tower 
Defender game (led by Richard) in order to 'see how it goes', which revealed 
some pretty significant problems and the game quickly stalled as a result. 

Having built a prototype floor plan tool in JFX2 before I can say it did not go 
smoothly. The things I've listed as wanting best practices for are all areas 
where I struggled to make jfx achieve decent results in terms of 
responsiveness, animation speed/smoothness, rendering quality and simplicity 
and cleanliness of code. 

The one area where I'd say it did hold up well (as far as I could tell) was 
frame rate but that didn't help me at all and I doubt would be much consolation 
for you after you make the massive effort needed to convert your app. 



On 24/07/2013, at 4:29 PM, Joseph Andresen joseph.andre...@oracle.com wrote:

 I believe JavaFx could do cad, first step would be to provide a simple data 
 set and boil it down to the best render paths in JavaFX. 
 
 As far as I know it shouldn't be any worse than swing with the slowest render 
 paths.
 
 -Joe
 
 On Jul 23, 2013, at 8:47 AM, Chris Gay chris.gay5...@gmail.com wrote:
 
 Hello all.
 
 Please could someone advise if it is even feasible for me to consider 
 re-factoring the following Swing application, so that it becomes a JavaFX 
 one. From trying to read about JavaFX, I get the feeling that Oracle never 
 intended Java FX for the purpose I need.
 
 I have a large Java Swing desktop CAD application which makes heavy use of 
 the Java 2D API, and concurrency. It is a Menu Bar driven application, with 
 a Toolbar for Tools, and a few buttons, but 99% of the user activity 
 concerns selecting and manipulating vector graphical objects in a 
 traditional manner using one Tool at a time (think Inkscape or LibreOffice 
 Drawing apps). The application has multiple drawings open at the same time 
 (but only one is visible), and each Drawing contains it's own Drawing and 
 Processing threads (in addition to sharing the Main and Event Threads), 
 which keeps the Event Thread lively. Each Drawing contains an ArrayList, 
 acting as a Display List of all graphical objects, and each graphical object 
 can be a tree structure. In many cases I use simple iteration instead of 
 Iterators, simply for speed, and to avoid garbage. The graphical objects are 
 lightweight, in that they do not carry references to events and handlers. 
 All they carry is their basic geometric data and properties, a bounding box 
 which they can lend as Read Only, and a boolean flag to indicate selection, 
 which means there can be millions of the objects, with a minimum memory 
 footprint. To support them, there are many hundreds of methods, which the 
 tools interact with. There can be multiple Drawing Windows active on a 
 single drawing, where each Window is backed up by an offscreen image, which 
 handles the zoom and sliding buffer behaviour for fast scrolling, to allow 
 rapid bit-blt's to the actual window. Lastly, the user manipulates the 
 Drawing (Display List), using one of many Tools, where the active Tool 
 receives events from the event queue, and then manipulates selected and/or 
 unselected graphical objects, by using XOR Mode graphics onto the offscreen 
 buffer, generally using callbacks.
 
 The system is fast and very responsive on large data sets, but what I do not 
 know is whether JavaFX will help me make a better implementation, or whether 
 it will fight me all the way. With JavaFX claiming hardware acceleration, I 
 do not understand whether it depends on transferring the very large data 
 sets into graphics hardware to render, and what happens if the hardware 
 cannot cope. So far, I have found little in the way of discussions that help 
 me get a mental picture of how JavaFX is intended to work. Should I stick 
 with Swing?
 
 Regards,
 
 Chris
 


hg: openjfx/8/graphics/rt: RT-26702 Poor DisplacementMap effect performance on Mac

2013-07-24 Thread hang . vo
Changeset: dd30604ab7d0
Author:Petr Pchelko petr.pche...@oracle.com
Date:  2013-07-24 11:24 +0400
URL:   http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/dd30604ab7d0

RT-26702 Poor DisplacementMap effect performance on Mac
Reviewed-by: anthony, art, snorthov

! modules/graphics/src/main/native-glass/mac/GlassEmbeddedWindow+Overrides.m
! modules/graphics/src/main/native-glass/mac/GlassFrameBufferObject.h
! modules/graphics/src/main/native-glass/mac/GlassFrameBufferObject.m
! modules/graphics/src/main/native-glass/mac/GlassLayer3D.h
! modules/graphics/src/main/native-glass/mac/GlassLayer3D.m
! modules/graphics/src/main/native-glass/mac/GlassOffscreen.h
! modules/graphics/src/main/native-glass/mac/GlassOffscreen.m
! modules/graphics/src/main/native-glass/mac/GlassView3D.m



FBX Importer for OpenJFX

2013-07-24 Thread Robert Fisher
Hi all,
 
We would like to be able to load FBX files into the 3DViewer app. Are there any 
plans to develop an FBX importer, or is this something we should implement 
ourselves?
 
Thanks in advance.
 
Rob


hg: openjfx/8/graphics/rt: Merged AnimationPathHelper and Position2D into PathTransition

2013-07-24 Thread hang . vo
Changeset: a22a79de9b10
Author:Martin Sladecek martin.slade...@oracle.com
Date:  2013-07-24 09:35 +0200
URL:   http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/a22a79de9b10

Merged AnimationPathHelper and Position2D into PathTransition

! modules/graphics/src/main/java/com/sun/javafx/TempState.java
- 
modules/graphics/src/main/java/com/sun/javafx/animation/transition/AnimationPathHelper.java
- 
modules/graphics/src/main/java/com/sun/javafx/animation/transition/Position2D.java
! modules/graphics/src/main/java/javafx/animation/PathTransition.java
! modules/graphics/src/main/java/javafx/scene/Node.java



Re: Disabling JavaFX minimise/maximise/etc buttons

2013-07-24 Thread Artem Ananiev


On 7/24/2013 12:34 AM, Anthony Petrov wrote:

Hi Werner,

On 07/23/2013 03:19 PM, Werner Lehmann wrote:

On 23.07.2013 12:39, Artem Ananiev wrote:

To me, making a window non-resizable is a good way to make the window
unmaximizable. Do you see any cases, when a window should be resizable,
but not maximizable?


I create resizable modal dialogs on a frequent basis. To me, sizability
is a convenience for the user. At the same time, modal dialogs should
not be maximized. My opinion.


I don't agree. IMO, it's annoying when I'm able to resize a window
freely but unable to maximize it. This just doesn't look logical or
convenient.


+1


Unminimizable windows are annoying. If we disable that, we'll likely get
some weirdness, e.g. Win+M or Win+D on Windows will leave the window on
the desktop, which is not what users expect.


Minimizing a modal dialog does not achieve much because the owning
window is still blocked. Unless that window is minimized along. At least
Windows usually disables the window decoration buttons of the owning
window though.


Indeed. I was thinking about implementing the behavior that OS X
provides for native windows: if you iconify an owned modal dialog, its
owner gets iconified as well. This looks very convenient. We might try
to implement this in Glass for other platforms as well. Or
alternatively, we could provide an API to disable window iconification.


Modal dialogs are (or should be) used to get some input from user. 
Window closing confirmation is a good example. Application cannot 
proceed further, until it have the input, so it doesn't make sense to 
minimize the modal dialog and leave application in the suspended state.


Thanks,

Artem


--
best regards,
Anthony


Re: Disabling JavaFX minimise/maximise/etc buttons

2013-07-24 Thread Artem Ananiev


On 7/24/2013 12:45 AM, Fabrizio Giudici wrote:

On Tue, 23 Jul 2013 22:34:48 +0200, Anthony Petrov
anthony.pet...@oracle.com wrote:


I don't agree. IMO, it's annoying when I'm able to resize a window
freely but unable to maximize it. This just doesn't look logical or
convenient.


I'm with Werner here. Maximixing a dialog is usually ugly from the
aesthetic point of view, but sometimes I'm annoyed by dialogs that are
just a bit too narrow for entering a text, or something else
(incidentally, e.g. the Java control panel seems to be filled with
non-resizable windows designed just to annoy people :-). I'd just like
to stretch them a bit.


Could you identify the boundary between just making a window larger and 
maximizing it? I can't. What about Windows 7 snap feature, is it 
resizing or maximizing? In other words, my understanding is that if a 
window is resizable, it should be maximizable as well. However, as I 
wrote in my previous emails, sometimes it's out of Java control: we can 
say if a window should be resizable or not, and the platform decides if 
it is minimizable/maximizable or not.


Thanks,

Artem


But I don't know how this stands with the various operating system
design guidelines.


Re: Disabling JavaFX minimise/maximise/etc buttons

2013-07-24 Thread Fabrizio Giudici
On Wed, 24 Jul 2013 09:59:07 +0200, Artem Ananiev  
artem.anan...@oracle.com wrote:




On 7/24/2013 12:45 AM, Fabrizio Giudici wrote:

On Tue, 23 Jul 2013 22:34:48 +0200, Anthony Petrov
anthony.pet...@oracle.com wrote:


I don't agree. IMO, it's annoying when I'm able to resize a window
freely but unable to maximize it. This just doesn't look logical or
convenient.


I'm with Werner here. Maximixing a dialog is usually ugly from the
aesthetic point of view, but sometimes I'm annoyed by dialogs that are
just a bit too narrow for entering a text, or something else
(incidentally, e.g. the Java control panel seems to be filled with
non-resizable windows designed just to annoy people :-). I'd just like
to stretch them a bit.


Could you identify the boundary between just making a window larger and  
maximizing it? I can't. What about Windows 7 snap feature, is it  
resizing or maximizing? In other words, my understanding is that if a  
window is resizable, it should be maximizable as well. However, as I  
wrote in my previous emails, sometimes it's out of Java control: we can  
say if a window should be resizable or not, and the platform decides if  
it is minimizable/maximizable or not.


Thanks,


The boundary is when you feel the look is ugly, thus it's related to the %  
of size increase. That's why snap is not a problem. Of course I can't  
tell you a precise threshold, it depends. But it's ok when I just enlarge  
a window because it lacks the room for say 5-10 characters of input, while  
I don't like to see a maximized window where there's just a small content  
and large amounts of empty space.


Also: sometimes you want a modal, that is the main window is blocked, but  
perhaps you need to read something in the main window, that would help to  
answer to the question of the modal. If the modal is just resizable (and  
draggable) there's no problem. If the modal has been maximized, you can't.  
Of course, it's up to the user to avoid maximizing it if it's a problem -  
there are no showstoppers here. But UI design is all about driving the  
user in the right direction and minimizing the number of interaction items  
needed to accomplish a task.


--
Fabrizio Giudici - Java Architect @ Tidalwave s.a.s.
We make Java work. Everywhere.
http://tidalwave.it/fabrizio/blog - fabrizio.giud...@tidalwave.it


Re: Disabling JavaFX minimise/maximise/etc buttons

2013-07-24 Thread Anthony Petrov

On 07/24/13 12:29, Fabrizio Giudici wrote:

On Wed, 24 Jul 2013 09:59:07 +0200, Artem Ananiev
artem.anan...@oracle.com wrote:

On 7/24/2013 12:45 AM, Fabrizio Giudici wrote:

On Tue, 23 Jul 2013 22:34:48 +0200, Anthony Petrov
anthony.pet...@oracle.com wrote:


I don't agree. IMO, it's annoying when I'm able to resize a window
freely but unable to maximize it. This just doesn't look logical or
convenient.


I'm with Werner here. Maximixing a dialog is usually ugly from the
aesthetic point of view, but sometimes I'm annoyed by dialogs that are
just a bit too narrow for entering a text, or something else
(incidentally, e.g. the Java control panel seems to be filled with
non-resizable windows designed just to annoy people :-). I'd just like
to stretch them a bit.


Could you identify the boundary between just making a window larger
and maximizing it? I can't. What about Windows 7 snap feature, is it
resizing or maximizing? In other words, my understanding is that if a
window is resizable, it should be maximizable as well. However, as I
wrote in my previous emails, sometimes it's out of Java control: we
can say if a window should be resizable or not, and the platform
decides if it is minimizable/maximizable or not.

Thanks,


The boundary is when you feel the look is ugly, thus it's related to the
% of size increase. That's why snap is not a problem. Of course I
can't tell you a precise threshold, it depends. But it's ok when I just
enlarge a window because it lacks the room for say 5-10 characters of
input, while I don't like to see a maximized window where there's just a
small content and large amounts of empty space.


Then just don't push the Maximize button! :) I mean, you can easily 
achieve the state of ugliness by resizing the window as well, but you 
still want it to be resizable. So what's the big deal with the Maximize 
button then? Let it be there for people who want/need it.




Also: sometimes you want a modal, that is the main window is blocked,
but perhaps you need to read something in the main window, that would
help to answer to the question of the modal. If the modal is just
resizable (and draggable) there's no problem. If the modal has been
maximized, you can't. Of course, it's up to the user to avoid maximizing
it if it's a problem - there are no showstoppers here. But UI design is
all about driving the user in the right direction and minimizing the
number of interaction items needed to accomplish a task.


I doubt an app would maximize a dialog initially (and if it does, it's a 
problem in the app itself). Otherwise, it's up to the user to 
maximize/unmaximize the dialog, or only resize it whenever and however 
it is needed/convenient at the moment.


--
best regards,
Anthony


Re: Can JavaFX do CAD?

2013-07-24 Thread Hervé Girod
We switched a vector editor which used swing to JavaFX (using a standard called 
ARINC 661), and we have no problems of performance in the Editor even for 
thousands of nodes. But I agree that you should not use the obvious 
Swing-converted way to do the same thing in JavaFX.

Hervé

Sent from my iPhone

On 24 juil. 2013, at 09:19, Daniel Zwolenski zon...@gmail.com wrote:

 I think the below comment makes it sound more straight forward than it is. In 
 building a diagramming tool there is much more to it than just the rendering 
 frame rate. 
 
 This topic about CAD-like apps and 'performant' highly visual jfx apps in 
 general has been raised here and in the forums before, without any clear 
 resolution. Chris, the closest we've come to an answer is that it certainly 
 isn't straight forward to do and there are many areas where the intuitive 
 solution (especially for us ex-swing devs) gives results that are horribly 
 unusable. 
 
 There *might* be a way to get jfx to do this but there's no clear guidelines 
 on how to achieve a 'performant' result. This is why I +1'd your question and 
 added areas I feel need clarification from the jfx team. Unfortunately I'm 
 not entirely sure they know the answers themselves and it generally comes 
 back as a 'you try it and let us know how it goes'. 
 
 The last time we raised a similar topic it led to an attempt to build a Tower 
 Defender game (led by Richard) in order to 'see how it goes', which revealed 
 some pretty significant problems and the game quickly stalled as a result. 
 
 Having built a prototype floor plan tool in JFX2 before I can say it did not 
 go smoothly. The things I've listed as wanting best practices for are all 
 areas where I struggled to make jfx achieve decent results in terms of 
 responsiveness, animation speed/smoothness, rendering quality and simplicity 
 and cleanliness of code. 
 
 The one area where I'd say it did hold up well (as far as I could tell) was 
 frame rate but that didn't help me at all and I doubt would be much 
 consolation for you after you make the massive effort needed to convert your 
 app. 
 
 
 
 On 24/07/2013, at 4:29 PM, Joseph Andresen joseph.andre...@oracle.com wrote:
 
 I believe JavaFx could do cad, first step would be to provide a simple data 
 set and boil it down to the best render paths in JavaFX. 
 
 As far as I know it shouldn't be any worse than swing with the slowest 
 render paths.
 
 -Joe
 
 On Jul 23, 2013, at 8:47 AM, Chris Gay chris.gay5...@gmail.com wrote:
 
 Hello all.
 
 Please could someone advise if it is even feasible for me to consider 
 re-factoring the following Swing application, so that it becomes a JavaFX 
 one. From trying to read about JavaFX, I get the feeling that Oracle never 
 intended Java FX for the purpose I need.
 
 I have a large Java Swing desktop CAD application which makes heavy use of 
 the Java 2D API, and concurrency. It is a Menu Bar driven application, with 
 a Toolbar for Tools, and a few buttons, but 99% of the user activity 
 concerns selecting and manipulating vector graphical objects in a 
 traditional manner using one Tool at a time (think Inkscape or LibreOffice 
 Drawing apps). The application has multiple drawings open at the same time 
 (but only one is visible), and each Drawing contains it's own Drawing and 
 Processing threads (in addition to sharing the Main and Event Threads), 
 which keeps the Event Thread lively. Each Drawing contains an ArrayList, 
 acting as a Display List of all graphical objects, and each graphical 
 object can be a tree structure. In many cases I use simple iteration 
 instead of Iterators, simply for speed, and to avoid garbage. The graphical 
 objects are lightweight, in that they do not carry references to events and 
 handlers. All they carry is their basic geometric data and properties, a 
 bounding box which they can lend as Read Only, and a boolean flag to 
 indicate selection, which means there can be millions of the objects, with 
 a minimum memory footprint. To support them, there are many hundreds of 
 methods, which the tools interact with. There can be multiple Drawing 
 Windows active on a single drawing, where each Window is backed up by an 
 offscreen image, which handles the zoom and sliding buffer behaviour for 
 fast scrolling, to allow rapid bit-blt's to the actual window. Lastly, the 
 user manipulates the Drawing (Display List), using one of many Tools, where 
 the active Tool receives events from the event queue, and then manipulates 
 selected and/or unselected graphical objects, by using XOR Mode graphics 
 onto the offscreen buffer, generally using callbacks.
 
 The system is fast and very responsive on large data sets, but what I do 
 not know is whether JavaFX will help me make a better implementation, or 
 whether it will fight me all the way. With JavaFX claiming hardware 
 acceleration, I do not understand whether it depends on transferring the 
 very large data sets into graphics hardware 

Re: Disabling JavaFX minimise/maximise/etc buttons

2013-07-24 Thread Anthony Petrov

Hi Jonathan,

setResizable(false) only disables the Maximize button (for obvious 
reasons.) And this should already be implemented.


As to the setIconifiable(boolean) functionality, I agree it would be 
fine to have it. Please file a JIRA issue and we'll implement it.


To address Tom's suggestion on adding fine-grained control for trim 
buttons: I don't support this idea for the following reason: you can 
access, say, the Iconify action via the trim button. But you can also 
right-click the window's titlebar and choose it from the menu. Moreover, 
you can right-click the taskbar button associated with the window and 
open the same menu from there. In those menus the Iconify is not a 
button but a menu item. However, both the trim button and the menu item 
represent the Iconify action. Therefore, from API perspective I'd prefer 
to be able to disable the Iconify action itself (i.e. the higher level 
concept) rather than disable individual native GUI items responsible for 
firing the event.


I understand that most likely you're referring to a case when you want 
to maximize a window pogramatically and disallow a user to get the 
window back to the normal state. I believe you can achieve this using an 
UNDECORATED window more easily.


--
best regards,
Anthony

On 07/24/13 00:36, Jonathan Giles wrote:

To be clear, are you proposing that setResizable(false) on a Stage
(where its owner is non-null) will be used to specify both that the
stage can not be resized and that it can not be minimised?

I don't have a big opinion on the best approach, except of course the
discoverability of the functionality might be somewhat questionable. If
it were me (and without all the insights your team has), my alternative
suggestion would be to introduce a setIconifiable(boolean) method (along
with isIconifiable() and iconifiableProperty()). I only recommend this
to have some degree of symmetry with the iconfied property that is used
to represent (I believe) whether the stage is currently minimised.

In my use case for dialogs, specifying the owner is an optional
property, but in general it is one of those properties that people
should not leave as null. In other words, I'm comfortable enforcing a
non-null owner requirement for people who do not want the minimize
button, for example.

Thanks,
-- Jonathan

On 24/07/2013 8:27 a.m., Anthony Petrov wrote:

Hi Artem, Jonathan,

I agree with what you say, except for using the initOwner() to imply
some particular (and implicit) style that is going to be applied to
the window. We should evaluate first whether the current
implementation is sufficient. And no, I don't see a reason to disable
maximization for a resizable window.

Jonathan: what is your opinion on using the setResizable(false) for
the use cases that you outlined?

--
best regards,
Anthony

On 07/23/2013 02:39 PM, Artem Ananiev wrote:


On 7/22/2013 9:17 PM, Anthony Petrov wrote:

Hi Artem,

Do you propose to add another StageStyle - namely, a DIALOG? Note that
styles cannot be combined in a mask, meaning that developers won't be
able to create e.g. transparent dialogs, or utility dialogs.


There is no need in yet another StageStyle, because we already have
this: Window.initOwner(). If we pass the owner to the platform, and set
appropriate hints for owned/ownerless windows, we should look and behave
similar to native apps.


Generally, I like the idea of defining the purpose of a window and
letting the OS/GUI toolkit decide what works best for it, but I'm not
sure if we can apply it for this particular use case. Also, I think
that
ability to disable maximization/minimization of a window might be
useful
for purposes other than just displaying dialogs.


To me, making a window non-resizable is a good way to make the window
unmaximizable. Do you see any cases, when a window should be resizable,
but not maximizable?


BTW, isn't the setResizable(false) a good approximation for our
requirements? You can still minimize such a window, but I think this is
reasonable. E.g. OS X will minimize both the dialog and its owner
window, allowing a user to perform other tasks unrelated to the dialog
and windows it blocks. Why do we want to disable minimization?


Unminimizable windows are annoying. If we disable that, we'll likely get
some weirdness, e.g. Win+M or Win+D on Windows will leave the window on
the desktop, which is not what users expect.

Thanks,

Artem


--
best regards,
Anthony

On 07/22/2013 07:20 PM, Artem Ananiev wrote:


On 7/22/2013 11:14 AM, Pavel Safrata wrote:

Hi Jonathan,
I believe this has been neither requested nor discussed so far. I
don't
see why this couldn't be added, it just might have to be a
conditional
feature, we'll have to check. Feel free to file a feature request.


Some native platforms (mostly, X window managers) don't provide direct
APIs to enable/disable certain window decoration buttons. A library or
an application may provides some hints, which may or may not be
respected by WM.

I like what 

hg: openjfx/8/graphics/rt: 2 new changesets

2013-07-24 Thread hang . vo
Changeset: 5eab61f82635
Author:Martin Sladecek martin.slade...@oracle.com
Date:  2013-07-24 13:30 +0200
URL:   http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/5eab61f82635

Forgot to trigger pulse on requestLayout after RT-31644.

! modules/graphics/src/main/java/javafx/scene/Parent.java
! modules/graphics/src/stub/java/javafx/scene/ParentTest.java

Changeset: da8e6e3cc25c
Author:Martin Sladecek martin.slade...@oracle.com
Date:  2013-07-24 13:31 +0200
URL:   http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/da8e6e3cc25c

Automated merge with 
ssh://jfxsrc.us.oracle.com//javafx/8.0/scrum/graphics/jfxrt




Re: Disabling JavaFX minimise/maximise/etc buttons

2013-07-24 Thread Fabrizio Giudici
On Wed, 24 Jul 2013 12:52:27 +0200, Anthony Petrov  
anthony.pet...@oracle.com wrote:


Otherwise, it's up to the user to maximize/unmaximize the dialog, or  
only resize it whenever and however it is needed/convenient at the  
moment.


As I said, to me UI design is also constraining the user in the set of  
meaningful actions. The more useless freedom you give him, the more damage  
he will do :-)


--
Fabrizio Giudici - Java Architect @ Tidalwave s.a.s.
We make Java work. Everywhere.
http://tidalwave.it/fabrizio/blog - fabrizio.giud...@tidalwave.it


Re: Can JavaFX do CAD?

2013-07-24 Thread Chris Gay
Hi Daniel,

I totally agree with your wishes, and even wonder if it is feasible in JavaFX.

With my Swing App, although I support mouse-over sensitivity on things like 
JButtons, I do not support it on graphical objects, simply because the effort 
would kill the system, given millions of objects. Only when the mouse is 
clicked, dragged, or active-up do I provide dynamic visual feedback. I have yet 
to find anything written about Rubber-banding using a XOR mode graphics 
context in JavaFX. The way 3D games work has tended to be significantly 
different to how 2D CAD has worked in the past.

I did not want limitations on how far I could zoom-in, so caching bitmaps to 
represent handles (XOR Mode) at a given scale was ruled-out, since they could 
be vast. Instead everything is done using Float data (mostly 64 bit Double 
Float in fact), with some key data, such as handle sizes having to dynamically 
scale for every new scale, so that they appear as a constant number of pixels. 
None of this data is parked in the graphical objects, but is held by the 
Viewport/Drawing Board, and supplied to the active Tool on request. Then 
everything is a vector draw using a Graphics2D context on the off-screen 
buffer, whether Bezier Curves, Fonts or whatever, and uses its own Drawing 
Thread. All the Event Thread does on paint, is a scaled bit-blt. With the 
concept of a Graphics Context being almost universal across systems, my hope 
was that it would get good hardware acceleration.

I just can't get my head around how I even go about this in JavaFX. A good demo 
application is badly needed. Surely someone within the JavaFX developers at 
Oracle has an idea, or maybe they never considered it?

I'm only considering JavaFX because Oracle seem to be deprecating Swing  AWT, 
and clearly have no intention of supporting touch interfaces  tablets in Swing.

Kind regards,

Chris
On 24 Jul 2013, at 00:21, Daniel Zwolenski wrote:

 +1
 
 More specifically I would like to know the official recommended best 
 practices for implementing a CAD style app in JFX.
 
 - How best to represent large numbers of complex shapes efficiently, and when 
 to add shapes to the scene (add all and let jfx clip, or manually work out 
 what should be showing, etc)
 - How best to handle font scaling and image scaling when rendered in a zoomed 
 in/out viewport
 - How best to do panning and zooming with dynamic level of detail
 - How best to do the top level display in terms of panes vs regions vs 
 canvas, vs whatever, how to manage overlays and layers (sharing same 
 coordinate space, etc)
 - How best to do picking, mouse overs, dragging across the 'display'
 - How best to do infinite or dynamic  bounds so you can add and move shapes 
 and the scrolling adjusts accordingly. 
 
 A JFX diagramming app would make a very powerful demo app in my mind. 
 
 
 
 
 
 On 24/07/2013, at 1:47 AM, Chris Gay chris.gay5...@gmail.com wrote:
 
 Hello all.
 
 Please could someone advise if it is even feasible for me to consider 
 re-factoring the following Swing application, so that it becomes a JavaFX 
 one. From trying to read about JavaFX, I get the feeling that Oracle never 
 intended Java FX for the purpose I need.
 
 I have a large Java Swing desktop CAD application which makes heavy use of 
 the Java 2D API, and concurrency. It is a Menu Bar driven application, with 
 a Toolbar for Tools, and a few buttons, but 99% of the user activity 
 concerns selecting and manipulating vector graphical objects in a 
 traditional manner using one Tool at a time (think Inkscape or LibreOffice 
 Drawing apps). The application has multiple drawings open at the same time 
 (but only one is visible), and each Drawing contains it's own Drawing and 
 Processing threads (in addition to sharing the Main and Event Threads), 
 which keeps the Event Thread lively. Each Drawing contains an ArrayList, 
 acting as a Display List of all graphical objects, and each graphical object 
 can be a tree structure. In many cases I use simple iteration instead of 
 Iterators, simply for speed, and to avoid garbage. The graphical objects are 
 lightweight, in that they do not carry references to events and handlers. 
 All they carry is their basic geometric data and properties, a bounding box 
 which they can lend as Read Only, and a boolean flag to indicate selection, 
 which means there can be millions of the objects, with a minimum memory 
 footprint. To support them, there are many hundreds of methods, which the 
 tools interact with. There can be multiple Drawing Windows active on a 
 single drawing, where each Window is backed up by an offscreen image, which 
 handles the zoom and sliding buffer behaviour for fast scrolling, to allow 
 rapid bit-blt's to the actual window. Lastly, the user manipulates the 
 Drawing (Display List), using one of many Tools, where the active Tool 
 receives events from the event queue, and then manipulates selected and/or 
 unselected graphical objects, by using XOR 

hg: openjfx/8/graphics/rt: 2 new changesets

2013-07-24 Thread hang . vo
Changeset: eb0a6b4fece3
Author:Daniel Blaukopf daniel.blauk...@oracle.com
Date:  2013-07-24 17:31 +0400
URL:   http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/eb0a6b4fece3

RT-31830 GTK port of Glass not built for embedded Linux targets

! buildSrc/armv6hf.gradle
! buildSrc/armv6sf.gradle
! buildSrc/x86egl.gradle

Changeset: 7b249ef11bf7
Author:Daniel Blaukopf daniel.blauk...@oracle.com
Date:  2013-07-24 17:39 +0400
URL:   http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/7b249ef11bf7

RT-27616 Set correct system font size on Embedded

! modules/graphics/src/main/java/com/sun/javafx/font/PrismFontFactory.java



Re: Can JavaFX do CAD?

2013-07-24 Thread Scott Palmer
You mention zoom level and bezier curves...
I found JavaFX Path drawing combined with zooming and a ScrollPane was 
pathologically slow (approximately 100 times slower than normal).  I filed an 
issue with a test case: RT-25166

I managed to speed it up a bit by avoiding the use of one of the Group nodes in 
favour of an AnchorPane, but I still find it slower than I want it to be.

I would start with using WriteableImage for your offscreen buffer exactly like 
you do for Swing.  It seems you have too many objects to just throw them all in 
the scene graph and duplicate your entire model with JavaFX nodes... It will 
not render fast enough ... My documents are simpler than yours and JavaFX is 
too slow when my documents get large.

Scott

On 2013-07-24, at 8:01 AM, Chris Gay chris.gay5...@gmail.com wrote:

 Hi Daniel,
 
 I totally agree with your wishes, and even wonder if it is feasible in JavaFX.
 
 With my Swing App, although I support mouse-over sensitivity on things like 
 JButtons, I do not support it on graphical objects, simply because the effort 
 would kill the system, given millions of objects. Only when the mouse is 
 clicked, dragged, or active-up do I provide dynamic visual feedback. I have 
 yet to find anything written about Rubber-banding using a XOR mode graphics 
 context in JavaFX. The way 3D games work has tended to be significantly 
 different to how 2D CAD has worked in the past.
 
 I did not want limitations on how far I could zoom-in, so caching bitmaps to 
 represent handles (XOR Mode) at a given scale was ruled-out, since they could 
 be vast. Instead everything is done using Float data (mostly 64 bit Double 
 Float in fact), with some key data, such as handle sizes having to 
 dynamically scale for every new scale, so that they appear as a constant 
 number of pixels. None of this data is parked in the graphical objects, but 
 is held by the Viewport/Drawing Board, and supplied to the active Tool on 
 request. Then everything is a vector draw using a Graphics2D context on the 
 off-screen buffer, whether Bezier Curves, Fonts or whatever, and uses its own 
 Drawing Thread. All the Event Thread does on paint, is a scaled bit-blt. With 
 the concept of a Graphics Context being almost universal across systems, my 
 hope was that it would get good hardware acceleration.
 
 I just can't get my head around how I even go about this in JavaFX. A good 
 demo application is badly needed. Surely someone within the JavaFX developers 
 at Oracle has an idea, or maybe they never considered it?
 
 I'm only considering JavaFX because Oracle seem to be deprecating Swing  
 AWT, and clearly have no intention of supporting touch interfaces  tablets 
 in Swing.
 
 Kind regards,
 
 Chris
 On 24 Jul 2013, at 00:21, Daniel Zwolenski wrote:
 
 +1
 
 More specifically I would like to know the official recommended best 
 practices for implementing a CAD style app in JFX.
 
 - How best to represent large numbers of complex shapes efficiently, and 
 when to add shapes to the scene (add all and let jfx clip, or manually work 
 out what should be showing, etc)
 - How best to handle font scaling and image scaling when rendered in a 
 zoomed in/out viewport
 - How best to do panning and zooming with dynamic level of detail
 - How best to do the top level display in terms of panes vs regions vs 
 canvas, vs whatever, how to manage overlays and layers (sharing same 
 coordinate space, etc)
 - How best to do picking, mouse overs, dragging across the 'display'
 - How best to do infinite or dynamic  bounds so you can add and move shapes 
 and the scrolling adjusts accordingly. 
 
 A JFX diagramming app would make a very powerful demo app in my mind. 
 
 
 
 
 
 On 24/07/2013, at 1:47 AM, Chris Gay chris.gay5...@gmail.com wrote:
 
 Hello all.
 
 Please could someone advise if it is even feasible for me to consider 
 re-factoring the following Swing application, so that it becomes a JavaFX 
 one. From trying to read about JavaFX, I get the feeling that Oracle never 
 intended Java FX for the purpose I need.
 
 I have a large Java Swing desktop CAD application which makes heavy use of 
 the Java 2D API, and concurrency. It is a Menu Bar driven application, with 
 a Toolbar for Tools, and a few buttons, but 99% of the user activity 
 concerns selecting and manipulating vector graphical objects in a 
 traditional manner using one Tool at a time (think Inkscape or LibreOffice 
 Drawing apps). The application has multiple drawings open at the same time 
 (but only one is visible), and each Drawing contains it's own Drawing and 
 Processing threads (in addition to sharing the Main and Event Threads), 
 which keeps the Event Thread lively. Each Drawing contains an ArrayList, 
 acting as a Display List of all graphical objects, and each graphical 
 object can be a tree structure. In many cases I use simple iteration 
 instead of Iterators, simply for speed, and to avoid garbage. The graphical 
 objects are lightweight, in 

Mixing 2D and 3D

2013-07-24 Thread August Lammersdorf, InteractiveMesh

Hi Richard,

thanks a lot for your detailed reply and the insights into your 
intentions and ideas. The mailing list members will appreciate being 
preferentially informed.


I think we already do multiple active cameras?

More precisely: simultaneous viewing from different points of view into 
a single 3D scene graph was meant, i.e. several cameras are attached to 
one scene graph.


A SubScene has exactly one camera attached which renders the associated 
scene graph into the corresponding SubScene's rectangle. Implementing 
simultaneous viewing requires a cloned 3D scene graph for the second, 
third, and so on SubScene/Camera. Material, Mesh, and Image objects can 
be re-used because they are shareable. Animations of Nodes' Transforms 
seem to be shareable as well. But Transitions (Rotate, Scale, Translate) 
have to be cloned because they operate on a Node's methods directly. So, 
simultaneous viewing seems practicable.


Key/ mouse / touch / etc should be there already?

Scene navigation and model interaction are often the first stumbling 
blocks for developers with less 3D experience. A ready to go rotate, 
zoom, and drag support including setting of arbitrary pivot points and 
adjustment of the camera's clipping planes would overcome one's 
inhibitions.


Node's properties and methods

Before I agree with all of your appraisals I would like to gain more 
experiences with their 3D related implementations. For instance I wasn't 
successful so far assigning a cursor to a Shape3D or receiving response 
from any 'setOnMouseXXX' method.


August



Fwd: Lambda Expressions Backported to Java 7, 6 and 5

2013-07-24 Thread Richard Bair
Interesting. If we end up using more Lambda's in FX, there might still be an 
easy way to maintain the back port to 7.

Richard

Begin forwarded message:

 From: Esko Luontola esko.luont...@gmail.com
 Subject: Lambda Expressions Backported to Java 7, 6 and 5
 Date: July 24, 2013 1:40:33 AM PDT
 To: lambda-...@openjdk.java.net
 
 Hi all,
 
 Thought you might want to know about this:
 
 http://blog.orfjackal.net/2013/07/lambda-expressions-backported-to-java-7.html
 https://github.com/orfjackal/retrolambda
 
 And thanks for developing the lambdas. :)
 
 I would just like to know that what is the probability for the 
 implementation of LambdaMetafactory or InnerClassLambdaMetafactory being 
 changed before the GA release of JDK 8?
 
 Currently Retrolambda relies on the fact that LambdaMetafactory 
 dynamically generates exactly one class per each invocation of 
 LambdaMetafactory's methods. Also it relies on the naming pattern of the 
 generated lambda class and the synthetic methods in the class containing 
 the lambda. If any of those implementation details change, I'll have to 
 update Retrolambda.
 
 -- 
 Esko Luontola
 www.orfjackal.net
 



Re: very poor performance on iOS :(

2013-07-24 Thread Richard Bair
Unfortunately, I'm one of those stuck waiting for the apple developer portal to 
come back online in order to renew my apple developer subscription, so I can't 
actually try this out myself.

Have you tried running with the perfLogger (I included instructions and how to 
understand the output in another thread yesterday). If you can show the output 
from the perf logger that would at least give some guidance as to where the 
time is being spent.

Richard

On Jul 24, 2013, at 5:16 AM, Tobias Bley t...@ultramixer.com wrote:

 Hi,
 
 i would like to start a discussion about the performance of JavaFX8 on iOS 
 (via RoboVM). If you make a little app with just one toggle button and run it 
 on iPhone4 (not simulator), the JavaFX rendering is very slow. So the button 
 press is painted with a really noticeable delay. I don’t understand this 
 behavior because I thought JavaFX rendering is very good and optimized using 
 hardware accelerated OpenGL code???
 
 Best regards,
 Tobi
 



Re: hg: openjfx/8/graphics/rt: RT-26702 Poor DisplacementMap effect performance on Mac

2013-07-24 Thread Petr Pchelko
Hello, Richard.

These changes fix the problem with dropping frames on Mac because of locking 
between the render thread and UI thread.

I have made some measurements with Controls benchmark and GUIMark2. The numbers 
without braces is the FPS rendered by Prism and the braced numbers represent 
how many frames we are actually rendering on the screen.
 
 Test Fix No Fix
bitmap-1000  76.1 (76.0)  75.3 (44.1) 
bitmap-3000  38.3 (38.1)  36.9 (31.2) 
bitmap-5000  23.4 (23.2)  22.6 (18.4) 
vector   31.6 (31.3)  31.8 (29.0) 
CheckBox 79(79)67(47) 

As you could see, with the fix we almost never drop frames, all of them are 
actually delivered to the screen. Prism performance is improved in some cases 
too. These are not all the results, just examples to feel the difference. 

With best regards. Petr.

On Jul 24, 2013, at 8:23 PM, Richard Bair richard.b...@oracle.com wrote:

 The name of the issue is pretty ho-hum, but actually this was a huge amount 
 of work to get finished. Petr, Artem, or Steve, can you give us a run-down of 
 the performance impact of this change on Mac?
 
 Thanks
 Richard
 
 On Jul 24, 2013, at 12:32 AM, hang...@oracle.com wrote:
 
 Changeset: dd30604ab7d0
 Author:Petr Pchelko petr.pche...@oracle.com
 Date:  2013-07-24 11:24 +0400
 URL:   http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/dd30604ab7d0
 
 RT-26702 Poor DisplacementMap effect performance on Mac
 Reviewed-by: anthony, art, snorthov
 
 ! modules/graphics/src/main/native-glass/mac/GlassEmbeddedWindow+Overrides.m
 ! modules/graphics/src/main/native-glass/mac/GlassFrameBufferObject.h
 ! modules/graphics/src/main/native-glass/mac/GlassFrameBufferObject.m
 ! modules/graphics/src/main/native-glass/mac/GlassLayer3D.h
 ! modules/graphics/src/main/native-glass/mac/GlassLayer3D.m
 ! modules/graphics/src/main/native-glass/mac/GlassOffscreen.h
 ! modules/graphics/src/main/native-glass/mac/GlassOffscreen.m
 ! modules/graphics/src/main/native-glass/mac/GlassView3D.m
 
 



hg: openjfx/8/graphics/rt: 2 new changesets

2013-07-24 Thread hang . vo
Changeset: 051ec7d12a9f
Author:Felipe Heidrich felipe.heidr...@oracle.com
Date:  2013-07-24 11:04 -0700
URL:   http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/051ec7d12a9f

RT-31458: Font fallback returned by DirectWrite might not be available to JFX

! modules/graphics/src/main/java/com/sun/javafx/font/PrismFontFactory.java
! 
modules/graphics/src/main/java/com/sun/javafx/font/directwrite/DWGlyphLayout.java
! 
modules/graphics/src/main/java/com/sun/javafx/font/directwrite/IDWriteFont.java
! modules/graphics/src/main/java/com/sun/javafx/font/directwrite/OS.java
! modules/graphics/src/main/native-font/directwrite.cpp

Changeset: f1be89b0bf87
Author:Felipe Heidrich felipe.heidr...@oracle.com
Date:  2013-07-24 11:06 -0700
URL:   http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/f1be89b0bf87

RT-31476: Exception when font size is set to 0

! modules/graphics/src/main/java/com/sun/javafx/font/coretext/CTGlyph.java
! modules/graphics/src/main/java/com/sun/javafx/font/coretext/CTGlyphLayout.java
! 
modules/graphics/src/main/java/com/sun/javafx/font/directwrite/DWGlyphLayout.java
! modules/graphics/src/main/java/com/sun/javafx/font/pango/FTFontFile.java
! modules/graphics/src/main/java/com/sun/javafx/font/pango/PangoGlyphLayout.java



Re: hg: openjfx/8/graphics/rt: RT-26702 Poor DisplacementMap effect performance on Mac

2013-07-24 Thread Richard Bair
So this should impact the jitter you would see on mac. What about on Windows, 
is there any impact there from this change or is it truly just for Mac? Has 
anybody tried to measure for dropped frames on Windows?

Richard

On Jul 24, 2013, at 11:31 AM, Petr Pchelko petr.pche...@oracle.com wrote:

 Hello, Richard.
 
 These changes fix the problem with dropping frames on Mac because of locking 
 between the render thread and UI thread.
 
 I have made some measurements with Controls benchmark and GUIMark2. The 
 numbers without braces is the FPS rendered by Prism and the braced numbers 
 represent how many frames we are actually rendering on the screen.
  
  Test Fix No Fix
 bitmap-1000  76.1 (76.0)  75.3 (44.1) 
 bitmap-3000  38.3 (38.1)  36.9 (31.2) 
 bitmap-5000  23.4 (23.2)  22.6 (18.4) 
 vector   31.6 (31.3)  31.8 (29.0) 
 CheckBox 79(79)67(47) 
 
 As you could see, with the fix we almost never drop frames, all of them are 
 actually delivered to the screen. Prism performance is improved in some cases 
 too. These are not all the results, just examples to feel the difference. 
 
 With best regards. Petr.
 
 On Jul 24, 2013, at 8:23 PM, Richard Bair richard.b...@oracle.com wrote:
 
 The name of the issue is pretty ho-hum, but actually this was a huge amount 
 of work to get finished. Petr, Artem, or Steve, can you give us a run-down 
 of the performance impact of this change on Mac?
 
 Thanks
 Richard
 
 On Jul 24, 2013, at 12:32 AM, hang...@oracle.com wrote:
 
 Changeset: dd30604ab7d0
 Author:Petr Pchelko petr.pche...@oracle.com
 Date:  2013-07-24 11:24 +0400
 URL:   http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/dd30604ab7d0
 
 RT-26702 Poor DisplacementMap effect performance on Mac
 Reviewed-by: anthony, art, snorthov
 
 ! modules/graphics/src/main/native-glass/mac/GlassEmbeddedWindow+Overrides.m
 ! modules/graphics/src/main/native-glass/mac/GlassFrameBufferObject.h
 ! modules/graphics/src/main/native-glass/mac/GlassFrameBufferObject.m
 ! modules/graphics/src/main/native-glass/mac/GlassLayer3D.h
 ! modules/graphics/src/main/native-glass/mac/GlassLayer3D.m
 ! modules/graphics/src/main/native-glass/mac/GlassOffscreen.h
 ! modules/graphics/src/main/native-glass/mac/GlassOffscreen.m
 ! modules/graphics/src/main/native-glass/mac/GlassView3D.m
 
 
 



very poor performance on iOS :(

2013-07-24 Thread Niklas Therning
Please try running with perfLogger and also Instruments. As I've pointed
out before RoboVM is in early stages of development. It doesn't do release
builds yet. Virtually nothing has been done yet to optimize things for
speed. So my guess is that you will find that a lot of time is spent in
RoboVM code. Also, AFAIU the Oracle guys have run this on iOS internally
and have seen decent performance (can someone confirm?). That would also
suggest that RoboVM is the problem at the moment.

/Niklas


On Wed, Jul 24, 2013 at 5:13 PM, Richard Bair
richard.b...@oracle.comjavascript:_e({}, 'cvml',
'richard.b...@oracle.com');
 wrote:

 Unfortunately, I'm one of those stuck waiting for the apple developer
 portal to come back online in order to renew my apple developer
 subscription, so I can't actually try this out myself.

 Have you tried running with the perfLogger (I included instructions and
 how to understand the output in another thread yesterday). If you can show
 the output from the perf logger that would at least give some guidance as
 to where the time is being spent.

 Richard

 On Jul 24, 2013, at 5:16 AM, Tobias Bley 
 t...@ultramixer.comjavascript:_e({}, 'cvml', 't...@ultramixer.com');
 wrote:

  Hi,
 
  i would like to start a discussion about the performance of JavaFX8 on
 iOS (via RoboVM). If you make a little app with just one toggle button and
 run it on iPhone4 (not simulator), the JavaFX rendering is very slow. So
 the button press is painted with a really noticeable delay. I don’t
 understand this behavior because I thought JavaFX rendering is very good
 and optimized using hardware accelerated OpenGL code???
 
  Best regards,
  Tobi
 




Re: Drag and drop tabs in TabPane

2013-07-24 Thread Jonathan Giles
At present there are no plans to implement this, but that is simply due 
to the fact that at present our focus is on bug fixing rather than 
features / tweaks. In other words, if this is a high priority for the 
community (via votes on the relevant jira issue - which looks like your 
one at [1]), then we will prioritise it the next time we start up on 
feature work.


Personally I would love to see this too - so I just cast my vote :-)

[1] https://javafx-jira.kenai.com/browse/RT-31574

-- Jonathan

On 24/07/2013 11:48 p.m., Peter Penzov wrote:

Hi,
I would like to ask you for which JavaFX version do you plan to
implement draggable tabs into TabPane? It will be very useful for users to
change the order of the tabs using mouse drag and drop.

Best wishes,
Peter




hg: openjfx/8/controls/rt: RT-31643: Um-al-qura calendar is not initialized properly when opened for the first time

2013-07-24 Thread hang . vo
Changeset: 6d0b751603ce
Author:leifs
Date:  2013-07-24 13:56 -0700
URL:   http://hg.openjdk.java.net/openjfx/8/controls/rt/rev/6d0b751603ce

RT-31643: Um-al-qura calendar is not initialized properly when opened for the 
first time

! 
modules/controls/src/main/java/com/sun/javafx/scene/control/skin/DateCellSkin.java



Re: API Change Proposal - Re: MSAA and Scene anti aliasing

2013-07-24 Thread Chien Yang
Thank you for the feedback! We decided to drop DEFAULT in favor of 
BALANCED. So here is the revised SceneAntiAliasing enum entries:


public enum SceneAntiAliasing {
BALANCED, // enables anti-aliasing using optimal system setting 
available that balances speed and quality

DISABLED, // disables anti-aliasing
FASTEST, // enables anti-aliasing using minimum system setting 
available that results in better frame rate
NICEST // enables anti-aliasing using maximum system setting 
available that results in best visual quality

}

Thanks,
- Chien

On 7/23/2013 1:29 PM, Chien Yang wrote:

Hi all,

We appreciate all the feedback you have contributed to this topic. 
After listening to the feedback and an internal discussion, we would 
like to propose a minor change to the API for supporting scene 
anti-aliasing. We intentionally choose not to expose the number of 
samples and techniques used in this release, but this doesn't preclude 
future addition when the time is right for more options. This change 
will be tracked by RT-31878 
(https://javafx-jira.kenai.com/browse/RT-31878):


Anti-aliasing API Change Proposal:

Constructors remove:
public Scene(Parent root, double width, double height, boolean 
depthBuffer, boolean antiAliasing)
public SubScene(Parent root, double width, double height, boolean 
depthBuffer, boolean antiAliasing)


Constructor add:
public Scene(Parent root, double width, double height, boolean 
depthBuffer, SceneAntiAliasing antiAliasing)
public SubScene(Parent root, double width, double height, boolean 
depthBuffer, SceneAntiAliasing antiAliasing)


Note:The antiAliasing argument will be used if the underlying graphics 
driver has anti-aliasing support.


Where SceneAntiAliasing is an enum with the following entries at the 
moment:


public enum SceneAntiAliasing {
DISABLED, // disables anti-aliasing
DEFAULT, // enables anti-aliasing using a default system setting 
available that balances speed and quality
FASTEST, // enables anti-aliasing using minimum system setting 
available that results in better frame rate
NICEST // enables anti-aliasing using maximum system setting 
available that results in best visual quality

}

Thanks,
- Chien




Re: API Change Proposal - Re: MSAA and Scene anti aliasing

2013-07-24 Thread Chien Yang

Thanks for the help! I was of 2 minds about it; alphabetical or logical.

public enum SceneAntiAliasing {
   DISABLED, // disables anti-aliasing
   BALANCED, // enables anti-aliasing using optimal system setting available 
that balances speed and quality
   FASTEST, // enables anti-aliasing using minimum system setting available 
that results in better frame rate
   NICEST // enables anti-aliasing using maximum system setting available that 
results in best visual quality
}

- Chien

On 7/24/2013 2:49 PM, Richard Bair wrote:

Just to be picky, I would put DISABLED first in the list. It seems more consistent 
to have the only OFF mode to be first and then all the rest of the options (which 
happen to then have ordinals  0) will be some form of ON mode.

Richard

On Jul 24, 2013, at 2:37 PM, Chien Yang chien.y...@oracle.com wrote:


Thank you for the feedback! We decided to drop DEFAULT in favor of BALANCED. So 
here is the revised SceneAntiAliasing enum entries:

public enum SceneAntiAliasing {
BALANCED, // enables anti-aliasing using optimal system setting available 
that balances speed and quality
DISABLED, // disables anti-aliasing
FASTEST, // enables anti-aliasing using minimum system setting available 
that results in better frame rate
NICEST // enables anti-aliasing using maximum system setting available that 
results in best visual quality
}

Thanks,
- Chien

On 7/23/2013 1:29 PM, Chien Yang wrote:

Hi all,

We appreciate all the feedback you have contributed to this topic. After 
listening to the feedback and an internal discussion, we would like to propose 
a minor change to the API for supporting scene anti-aliasing. We intentionally 
choose not to expose the number of samples and techniques used in this release, 
but this doesn't preclude future addition when the time is right for more 
options. This change will be tracked by RT-31878 
(https://javafx-jira.kenai.com/browse/RT-31878):

Anti-aliasing API Change Proposal:

Constructors remove:
public Scene(Parent root, double width, double height, boolean depthBuffer, 
boolean antiAliasing)
public SubScene(Parent root, double width, double height, boolean depthBuffer, 
boolean antiAliasing)

Constructor add:
public Scene(Parent root, double width, double height, boolean depthBuffer, 
SceneAntiAliasing antiAliasing)
public SubScene(Parent root, double width, double height, boolean depthBuffer, 
SceneAntiAliasing antiAliasing)

Note:The antiAliasing argument will be used if the underlying graphics driver 
has anti-aliasing support.

Where SceneAntiAliasing is an enum with the following entries at the moment:

public enum SceneAntiAliasing {
DISABLED, // disables anti-aliasing
DEFAULT, // enables anti-aliasing using a default system setting available 
that balances speed and quality
FASTEST, // enables anti-aliasing using minimum system setting available 
that results in better frame rate
NICEST // enables anti-aliasing using maximum system setting available that 
results in best visual quality
}

Thanks,
- Chien




hg: openjfx/8/graphics/rt: 2 new changesets

2013-07-24 Thread hang . vo
Changeset: 517ebe5062a9
Author:rbair
Date:  2013-07-24 15:37 -0700
URL:   http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/517ebe5062a9

RT-31748: Collapse NGNode related classes with only one implementation

- modules/graphics/src/main/java/com/sun/javafx/sg/prism/BaseCacheFilter.java
- modules/graphics/src/main/java/com/sun/javafx/sg/prism/BaseEffectFilter.java
- 
modules/graphics/src/main/java/com/sun/javafx/sg/prism/BaseNodeEffectInput.java
+ modules/graphics/src/main/java/com/sun/javafx/sg/prism/CacheFilter.java
+ modules/graphics/src/main/java/com/sun/javafx/sg/prism/EffectFilter.java
! modules/graphics/src/main/java/com/sun/javafx/sg/prism/NGNode.java
! modules/graphics/src/main/java/com/sun/javafx/sg/prism/NGRegion.java
! modules/graphics/src/main/java/com/sun/javafx/sg/prism/NodeEffectInput.java

Changeset: aedde4d42307
Author:rbair
Date:  2013-07-24 15:42 -0700
URL:   http://hg.openjdk.java.net/openjfx/8/graphics/rt/rev/aedde4d42307

RT-31911: Fix minor issues in CacheFilter discovered via static code analysis

! modules/graphics/src/main/java/com/sun/javafx/sg/prism/CacheFilter.java



hg: openjfx/8/controls/rt: RT-30903: DatePicker: one column separator is a bit thicker when setting showWeekNumbers.

2013-07-24 Thread hang . vo
Changeset: d3d8305d165c
Author:leifs
Date:  2013-07-24 17:23 -0700
URL:   http://hg.openjdk.java.net/openjfx/8/controls/rt/rev/d3d8305d165c

RT-30903: DatePicker: one column separator is a bit thicker when setting 
showWeekNumbers.

! 
modules/controls/src/main/java/com/sun/javafx/scene/control/skin/DatePickerContent.java



jfxrt.jar - is it platform specific?

2013-07-24 Thread Daniel Zwolenski
Obviously there are native libs (dlls, etc) that JFX uses that are outside
of the jfxrt.jar.

But is the actual jfxrt.jar produced by the build generic and able to be
used on any platform (so long as the natives are also present) or is it
platform specific itself?

We are getting close to the ios/backport stuff working (as well as it can
at this stage) and are aiming to start putting stuff in Maven soon. Just
want to make sure I get the separations as clean as possible because once
it's in Central it doesn't ever leave.

Cheers.


Re: API Change Proposal - Re: MSAA and Scene anti aliasing

2013-07-24 Thread Kevin Rushforth

+1 on having DISABLED be first.

-- Kevin


Richard Bair wrote:

Just to be picky, I would put DISABLED first in the list. It seems more consistent 
to have the only OFF mode to be first and then all the rest of the options (which 
happen to then have ordinals  0) will be some form of ON mode.

Richard

On Jul 24, 2013, at 2:37 PM, Chien Yang chien.y...@oracle.com wrote:

  

Thank you for the feedback! We decided to drop DEFAULT in favor of BALANCED. So 
here is the revised SceneAntiAliasing enum entries:

public enum SceneAntiAliasing {
   BALANCED, // enables anti-aliasing using optimal system setting available 
that balances speed and quality
   DISABLED, // disables anti-aliasing
   FASTEST, // enables anti-aliasing using minimum system setting available 
that results in better frame rate
   NICEST // enables anti-aliasing using maximum system setting available that 
results in best visual quality
}

Thanks,
- Chien

On 7/23/2013 1:29 PM, Chien Yang wrote:


Hi all,

   We appreciate all the feedback you have contributed to this topic. After 
listening to the feedback and an internal discussion, we would like to propose 
a minor change to the API for supporting scene anti-aliasing. We intentionally 
choose not to expose the number of samples and techniques used in this release, 
but this doesn't preclude future addition when the time is right for more 
options. This change will be tracked by RT-31878 
(https://javafx-jira.kenai.com/browse/RT-31878):

Anti-aliasing API Change Proposal:

Constructors remove:
public Scene(Parent root, double width, double height, boolean depthBuffer, 
boolean antiAliasing)
public SubScene(Parent root, double width, double height, boolean depthBuffer, 
boolean antiAliasing)

Constructor add:
public Scene(Parent root, double width, double height, boolean depthBuffer, 
SceneAntiAliasing antiAliasing)
public SubScene(Parent root, double width, double height, boolean depthBuffer, 
SceneAntiAliasing antiAliasing)

Note:The antiAliasing argument will be used if the underlying graphics driver 
has anti-aliasing support.

Where SceneAntiAliasing is an enum with the following entries at the moment:

public enum SceneAntiAliasing {
   DISABLED, // disables anti-aliasing
   DEFAULT, // enables anti-aliasing using a default system setting available 
that balances speed and quality
   FASTEST, // enables anti-aliasing using minimum system setting available 
that results in better frame rate
   NICEST // enables anti-aliasing using maximum system setting available that 
results in best visual quality
}

Thanks,
- Chien
  


  


Re: jfxrt.jar - is it platform specific?

2013-07-24 Thread Kevin Rushforth
Yes, jfxrt.jar is platform-specific. On the desktop there are 
platform-specific glass and Prism classes (not sure about the WebKit 
classes). On embedded platforms (Linux-arm, IOS, Android) there are many 
differences.


-- Kevin


Daniel Zwolenski wrote:

Obviously there are native libs (dlls, etc) that JFX uses that are outside
of the jfxrt.jar.

But is the actual jfxrt.jar produced by the build generic and able to be
used on any platform (so long as the natives are also present) or is it
platform specific itself?

We are getting close to the ios/backport stuff working (as well as it can
at this stage) and are aiming to start putting stuff in Maven soon. Just
want to make sure I get the separations as clean as possible because once
it's in Central it doesn't ever leave.

Cheers.