iOS: current state of RoboVM 0.0.2 + latest gradle based OpenJFX on iOS

2013-07-03 Thread Tobias Bley
Hi,

I tried to use the latest gradle based OpenJFX on iOS using RoboVM. Current 
state: it fails: The reason why is the font rendering using CoreText which 
currently is not possible on iOS.

Take a look here: coretext.c = #if TARGET_OS_MAC  !(TARGET_OS_IPHONE)

The alternative would be to use the T2K renderer, which is not  available in 
OpenJFX.

So currently we have to wait for an implementation of CoreText native code on 
iOS.

Best regards,
Tobi

Re: iOS: current state of RoboVM 0.0.2 + latest gradle based OpenJFX on iOS

2013-07-03 Thread Daniel Zwolenski
+100


On Wed, Jul 3, 2013 at 10:26 PM, cogmission1 .
cognitionmiss...@gmail.comwrote:

 Hi,

 Is that being worked on or did we just hit a brick wall?

 David


 On Wed, Jul 3, 2013 at 4:31 AM, Tobias Bley t...@ultramixer.com wrote:

  Hi,
 
  I tried to use the latest gradle based OpenJFX on iOS using RoboVM.
  Current state: it fails: The reason why is the font rendering using
  CoreText which currently is not possible on iOS.
 
  Take a look here: coretext.c = #if TARGET_OS_MAC  !(TARGET_OS_IPHONE)
 
  The alternative would be to use the T2K renderer, which is not  available
  in OpenJFX.
 
  So currently we have to wait for an implementation of CoreText native
 code
  on iOS.
 
  Best regards,
  Tobi



Re: iOS: current state of RoboVM 0.0.2 + latest gradle based OpenJFX on iOS

2013-07-03 Thread steve . x . northover

Hi Tobias,

CoreText has been supported on iOS since 3.2.  The code that is released 
was compiled and tested on OS X only but most of it should be applicable 
to iOS.  I have not investigated the differences between CoreText on iOS 
and on OS X to find out where the rough edges are but the code should be 
close.  Nobody has really tried it much except Felipe so I'll let him 
provide the details.  I can confirm that coretext.c is wired into the 
gradle build and that uncommenting the #if will compile the source and 
get compile errors on iOS.


There is a bug in the gradle incremental compiler for native code () so 
you will need this line to make sure your changes to native files get 
picked up:


gradle -PCOMPILE_TARGETS=ios clean sdk

I suggest we use this list to coordinate.

Steve

On 03/07/2013 5:31 AM, Tobias Bley wrote:

Hi,

I tried to use the latest gradle based OpenJFX on iOS using RoboVM. Current 
state: it fails: The reason why is the font rendering using CoreText which 
currently is not possible on iOS.

Take a look here: coretext.c = #if TARGET_OS_MAC  !(TARGET_OS_IPHONE)

The alternative would be to use the T2K renderer, which is not  available in 
OpenJFX.

So currently we have to wait for an implementation of CoreText native code on 
iOS.

Best regards,
Tobi




Re: iOS: current state of RoboVM 0.0.2 + latest gradle based OpenJFX on iOS

2013-07-03 Thread Tobias Bley
Hi Steve,

thanks for your answer. Yes I tried to replace the #if statement by „#if 1“ to 
compile the native code but it failed with several native errors. The main 
problem is that the ApplicationServices.framework used by coretext.c is only 
available on MacOSX but not on iOS SDK...

Tobi



Am 03.07.2013 um 14:32 schrieb steve.x.northo...@oracle.com:

 Hi Tobias,
 
 CoreText has been supported on iOS since 3.2.  The code that is released was 
 compiled and tested on OS X only but most of it should be applicable to iOS.  
 I have not investigated the differences between CoreText on iOS and on OS X 
 to find out where the rough edges are but the code should be close.  Nobody 
 has really tried it much except Felipe so I'll let him provide the details.  
 I can confirm that coretext.c is wired into the gradle build and that 
 uncommenting the #if will compile the source and get compile errors on iOS.
 
 There is a bug in the gradle incremental compiler for native code () so you 
 will need this line to make sure your changes to native files get picked up:
 
 gradle -PCOMPILE_TARGETS=ios clean sdk
 
 I suggest we use this list to coordinate.
 
 Steve
 
 On 03/07/2013 5:31 AM, Tobias Bley wrote:
 Hi,
 
 I tried to use the latest gradle based OpenJFX on iOS using RoboVM. Current 
 state: it fails: The reason why is the font rendering using CoreText which 
 currently is not possible on iOS.
 
 Take a look here: coretext.c = #if TARGET_OS_MAC  !(TARGET_OS_IPHONE)
 
 The alternative would be to use the T2K renderer, which is not  available in 
 OpenJFX.
 
 So currently we have to wait for an implementation of CoreText native code 
 on iOS.
 
 Best regards,
 Tobi
 



Re: iOS: current state of RoboVM 0.0.2 + latest gradle based OpenJFX on iOS

2013-07-03 Thread steve . x . northover

You can change the includes to match iOS as follows:

//#import ApplicationServices/ApplicationServices.h
#import CoreGraphics/CoreGraphics.h
#import CoreText/CoreText.h

I can confirm that changing the includes compiles the code but the 
gradle build for iOS is shifting under out feet.  I would let the dust 
setting for a few days and keep an eye on JIRA to track progress:


https://javafx-jira.kenai.com/browse/RT-31420

Steve

On 03/07/2013 9:11 AM, Tobias Bley wrote:

Hi Steve,

thanks for your answer. Yes I tried to replace the #if statement by „#if 1“ to 
compile the native code but it failed with several native errors. The main 
problem is that the ApplicationServices.framework used by coretext.c is only 
available on MacOSX but not on iOS SDK...

Tobi



Am 03.07.2013 um 14:32 schrieb steve.x.northo...@oracle.com:


Hi Tobias,

CoreText has been supported on iOS since 3.2.  The code that is released was 
compiled and tested on OS X only but most of it should be applicable to iOS.  I 
have not investigated the differences between CoreText on iOS and on OS X to 
find out where the rough edges are but the code should be close.  Nobody has 
really tried it much except Felipe so I'll let him provide the details.  I can 
confirm that coretext.c is wired into the gradle build and that uncommenting 
the #if will compile the source and get compile errors on iOS.

There is a bug in the gradle incremental compiler for native code () so you 
will need this line to make sure your changes to native files get picked up:

gradle -PCOMPILE_TARGETS=ios clean sdk

I suggest we use this list to coordinate.

Steve

On 03/07/2013 5:31 AM, Tobias Bley wrote:

Hi,

I tried to use the latest gradle based OpenJFX on iOS using RoboVM. Current 
state: it fails: The reason why is the font rendering using CoreText which 
currently is not possible on iOS.

Take a look here: coretext.c = #if TARGET_OS_MAC  !(TARGET_OS_IPHONE)

The alternative would be to use the T2K renderer, which is not  available in 
OpenJFX.

So currently we have to wait for an implementation of CoreText native code on 
iOS.

Best regards,
Tobi




Re: OpenJFX and iOS

2013-07-01 Thread Richard Bair
Thanks Danno, reading the patch now.

Richard

On Jun 29, 2013, at 8:01 AM, Danno Ferrin danno.fer...@shemnon.com wrote:

 Here's a patch that copies all the file types if variants are present, so now 
 all .a files show up in ios-sdk:
 
 https://bitbucket.org/narya/jfx78/commits/e69d574206cf59ed25e215cfd2479c9aae2ab296
 
 From my reading, .a files are static libraries, and dylib are dynamic 
 libraries.  iOS requires static linking if I read the docs correctly.
 
 On Sat, Jun 29, 2013 at 1:17 AM, Richard Bair richard.b...@oracle.com wrote:
 I haven't been this low level on building iOS, so I'm not sure how this 
 works. On iOS we don't have dynamic libraries, so why does changing the name 
 of the dynamic libraries to be .a make a difference? Or are you really 
 looking for the .o files? What happens to those .a's?
 
 I like the patch to push the dynamic library names into the .gradle files 
 (except it should be dylib instead of dynlib, right?)
 
 Richard
 
 On Jun 28, 2013, at 11:14 PM, Danno Ferrin danno.fer...@shemnon.com wrote:
 
 Here's a more general solution that pushes the naming into the compile 
 target build files (not tried on all paths, but works for iOS)
 
 https://bitbucket.org/narya/jfx78/commits/3a05c03810657d827d92d422fdadc3f2a60f9c62
 
 On Fri, Jun 28, 2013 at 11:51 PM, Danno Ferrin danno.fer...@shemnon.com 
 wrote:
 So it looks like the first step is to set the COMPILE_TARGETS to include 
 ios.  However, the script it spits out .dynlib instead of .a files, just a 
 naming thing.
 
 Here's a fix it now patch:
 https://bitbucket.org/narya/jfx78/commits/1df1b31cb9618560551fb43cebe5dacb678f0c7f
 but a better patch would be to make a function in each platform build file.
 
 So this spits out some .a files if you know where to dig for them...
 
 gradle sdk -PCOMPILE_TARGETS=ios
 
 
 On Wed, Jun 26, 2013 at 10:45 AM, Richard Bair richard.b...@oracle.com 
 wrote:
 At the moment the first P0 is to make sure that when we switch to gradle the 
 rest of the development team is able to continue on with their work. It is 
 going to be bumpy for a few days, and we might miss the weekly integration 
 for example next week depending on how it goes. However I would encourage 
 anybody working on iOS to supply patches as soon as you have them -- we're 
 applying an Android patch today for instance.
 
 Richard
 
 On Jun 26, 2013, at 8:26 AM, Danno Ferrin danno.fer...@shemnon.com wrote:
 
  RoboVM + libs is the goal here, on iOS.  The ant based libs worked before.
 
  My brief read of the scripts indicates to me it is mostly a question of
  modifying some of the guard conditions in the build, but making it work for
  the supported platforms first is more of a priority.
 
  On Wed, Jun 26, 2013 at 8:58 AM, Tobias Bley t...@ultramixer.com wrote:
 
  The problem is: a working gradle based iOS build isn’t of help to you
  because you’ll have to statically compile the JDK and OpenJFX together in
  one library - maybe with Avian+OpenJDK or RoboVM (android based) + 
  OpenJFX.
 
 
  Am 26.06.2013 um 03:41 schrieb Daniel Zwolenski zon...@gmail.com:
 
  How do we go about building OpenJFX for iOS? Does it work now and/or will
  the switch over to Gradle this friday/monday include support for an iOS
  build?
 
  I'll want to build from Danno's JFX78 backport but as I understand it, he
  is hooking into the official gradle build scripts so one should hopefully
  lead to the other.
 
  Cheers,
  Dan
 
 
 
 
 
 
 



Re: OpenJFX and iOS

2013-06-26 Thread Tobias Bley
The problem is: a working gradle based iOS build isn’t of help to you because 
you’ll have to statically compile the JDK and OpenJFX together in one library - 
maybe with Avian+OpenJDK or RoboVM (android based) + OpenJFX.


Am 26.06.2013 um 03:41 schrieb Daniel Zwolenski zon...@gmail.com:

 How do we go about building OpenJFX for iOS? Does it work now and/or will
 the switch over to Gradle this friday/monday include support for an iOS
 build?
 
 I'll want to build from Danno's JFX78 backport but as I understand it, he
 is hooking into the official gradle build scripts so one should hopefully
 lead to the other.
 
 Cheers,
 Dan



Re: OpenJFX and iOS

2013-06-26 Thread Danno Ferrin
RoboVM + libs is the goal here, on iOS.  The ant based libs worked before.

My brief read of the scripts indicates to me it is mostly a question of
modifying some of the guard conditions in the build, but making it work for
the supported platforms first is more of a priority.

On Wed, Jun 26, 2013 at 8:58 AM, Tobias Bley t...@ultramixer.com wrote:

 The problem is: a working gradle based iOS build isn’t of help to you
 because you’ll have to statically compile the JDK and OpenJFX together in
 one library - maybe with Avian+OpenJDK or RoboVM (android based) + OpenJFX.


 Am 26.06.2013 um 03:41 schrieb Daniel Zwolenski zon...@gmail.com:

  How do we go about building OpenJFX for iOS? Does it work now and/or will
  the switch over to Gradle this friday/monday include support for an iOS
  build?
 
  I'll want to build from Danno's JFX78 backport but as I understand it, he
  is hooking into the official gradle build scripts so one should hopefully
  lead to the other.
 
  Cheers,
  Dan




Re: OpenJFX and iOS

2013-06-26 Thread Richard Bair
At the moment the first P0 is to make sure that when we switch to gradle the 
rest of the development team is able to continue on with their work. It is 
going to be bumpy for a few days, and we might miss the weekly integration for 
example next week depending on how it goes. However I would encourage anybody 
working on iOS to supply patches as soon as you have them -- we're applying an 
Android patch today for instance.

Richard

On Jun 26, 2013, at 8:26 AM, Danno Ferrin danno.fer...@shemnon.com wrote:

 RoboVM + libs is the goal here, on iOS.  The ant based libs worked before.
 
 My brief read of the scripts indicates to me it is mostly a question of
 modifying some of the guard conditions in the build, but making it work for
 the supported platforms first is more of a priority.
 
 On Wed, Jun 26, 2013 at 8:58 AM, Tobias Bley t...@ultramixer.com wrote:
 
 The problem is: a working gradle based iOS build isn’t of help to you
 because you’ll have to statically compile the JDK and OpenJFX together in
 one library - maybe with Avian+OpenJDK or RoboVM (android based) + OpenJFX.
 
 
 Am 26.06.2013 um 03:41 schrieb Daniel Zwolenski zon...@gmail.com:
 
 How do we go about building OpenJFX for iOS? Does it work now and/or will
 the switch over to Gradle this friday/monday include support for an iOS
 build?
 
 I'll want to build from Danno's JFX78 backport but as I understand it, he
 is hooking into the official gradle build scripts so one should hopefully
 lead to the other.
 
 Cheers,
 Dan
 
 



Re: OpenJFX on iOS using RoboVM

2013-05-22 Thread Tobias Bley
Unfortunately because of the missing PrismFontLoader and the empty 
DummyFontLoader actually you can't use JFX controls like Label or Button 
because of an NullPointerException.

Exception in thread Thread-5 java.lang.RuntimeException: Exception in 
Application start method
at 
com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java)
at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java)
at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java)
at java.lang.Thread.run(Thread.java)
Caused by: java.lang.NullPointerException
at com.sun.javafx.text.PrismTextLayout.setContent(PrismTextLayout.java)
at javafx.scene.text.Text.getTextLayout(Text.java)
at javafx.scene.text.Text.needsFullTextLayout(Text.java)
at javafx.scene.text.Text.access$400(Text.java)
at javafx.scene.text.Text$7.invalidated(Text.java)
at 
javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java)
at 
javafx.beans.property.ObjectPropertyBase.bind(ObjectPropertyBase.java)
at javafx.css.StyleableObjectProperty.bind(StyleableObjectProperty.java)
at 
com.sun.javafx.scene.control.skin.LabeledText.init(LabeledText.java)
at 
com.sun.javafx.scene.control.skin.LabeledSkinBase.init(LabeledSkinBase.java)
at com.sun.javafx.scene.control.skin.LabelSkin.init(LabelSkin.java)
at javafx.scene.control.Label.createDefaultSkin(Label.java)
at javafx.scene.control.Control.impl_processCSS(Control.java)
at javafx.scene.Parent.impl_processCSS(Parent.java)
at javafx.scene.Node.processCSS(Node.java)
at javafx.scene.Scene.doCSSPass(Scene.java)
at javafx.scene.Scene.preferredSize(Scene.java)
at javafx.scene.Scene.impl_preferredSize(Scene.java)



Am 20.05.2013 um 19:04 schrieb Niklas Therning nik...@therning.org:

 Source code and build instructions for the BrickBreaker JavaFX sample on
 iOS/RoboVM is now available online [1]. The static libs included in that
 download have been compiled from my fork [2] of Danno Ferrin's JDK7
 backport of openjfx [3]. For build instructions please see [4].
 
 [1]
 http://blog.robovm.org/2013/05/brickbreaker-javafx-sample-on-ios-robovm-source-code-released.html
 [2] https://bitbucket.org/ntherning/jfx78
 [3] https://bitbucket.org/narya/jfx78
 [4] https://gist.github.com/ntherning/5613607
 
 /Niklas
 
 
 On Tue, May 14, 2013 at 9:30 AM, Niklas Therning nik...@therning.orgwrote:
 
 Hi,
 
 I'll clean up the code and post it somewhere later this week. We're not
 using OpenJDK's class libraries. It's Android's.
 
 
 On Mon, May 13, 2013 at 6:38 PM, steve.x.northo...@oracle.com wrote:
 
 Niklas!!!
 
 This is very cool.  Please make your work available as soon as possible
 so others can try it out.  I have played a bit with RoboVM and looked into
 what would be required to port JavaFX to it but did not get the time to do
 a deep dive.  Are you using the OpenJDK for the class libraries?
 
 Steve
 
 
 On 13/05/2013 5:32 AM, Niklas Therning wrote:
 
 Hi,
 
 I've managed to get OpenJFX running on iOS using RoboVM. Please see the
 RoboVM blog [1] for a quick video of it.
 
 I'd like to say thank you for writing such great code! BrickBreaker
 almost
 worked out of the box! I had to remove/stub out font related stuff of
 course and PlatformLogger had to be copied from OpenJDK. Also had to fix
 a
 tiny bug in the native glass code [2] and an NPE in
 PlatformUtil.getRTDir()
 when PlatformUtil.class isn't available in any jar file [3].
 
 Do you have an ETA on the open-sourcing of the font related code? It
 would
 be a fun challenge to get most of the controls or even the Ensemble
 sample
 to work but fonts are essential of course.
 
 [1] http://blog.robovm.org/2013/**05/javafx-openjfx-on-ios-**
 using-robovm.htmlhttp://blog.robovm.org/2013/05/javafx-openjfx-on-ios-using-robovm.html
 [2] 
 https://javafx-jira.kenai.com/**browse/RT-30327https://javafx-jira.kenai.com/browse/RT-30327
 [3] 
 https://javafx-jira.kenai.com/**browse/RT-30329https://javafx-jira.kenai.com/browse/RT-30329
 
 Regards,
 Niklas Therning
 
 
 
 



Re: OpenJFX on iOS using RoboVM

2013-05-22 Thread Niklas Therning
Tom, could it be due to some class missing? Do you get an exception? If you
launch the app with the -rvm:log=warn option failing Class.forName() calls
will be logged.

RoboVM strips out classes not being referenced to keep down the size of the
app. The compiler has to be told about classes that get loaded using
reflection. That's what the -roots command line option and the roots
section in the robovm.xml file are for. You may have to add a root there
for the class(es) containing the effect code. Or you could just add
root**.*/root and RoboVM will compile and link in everything.


On Wed, May 22, 2013 at 1:49 PM, Tom Schindl tom.schi...@bestsolution.atwrote:

 Hi,

 I also tried do something like this. I was able to work around the NPE by
 adding a dummy com.sun.javafx.text.**PrismTextLayout to the project.

 I also tried to run the vanishing circles demo but that one fails with an
 effect problem.

 Tom


 On 22.05.13 13:15, Tobias Bley wrote:

 Unfortunately because of the missing PrismFontLoader and the empty
 DummyFontLoader actually you can't use JFX controls like Label or Button
 because of an NullPointerException.

 Exception in thread Thread-5 java.lang.RuntimeException: Exception in
 Application start method
 at com.sun.javafx.application.**LauncherImpl.**
 launchApplication1(**LauncherImpl.java)
 at com.sun.javafx.application.**LauncherImpl.access$000(**
 LauncherImpl.java)
 at com.sun.javafx.application.**LauncherImpl$1.run(**
 LauncherImpl.java)
 at java.lang.Thread.run(Thread.**java)
 Caused by: java.lang.NullPointerException
 at com.sun.javafx.text.**PrismTextLayout.setContent(**
 PrismTextLayout.java)
 at javafx.scene.text.Text.**getTextLayout(Text.java)
 at javafx.scene.text.Text.**needsFullTextLayout(Text.java)
 at javafx.scene.text.Text.access$**400(Text.java)
 at javafx.scene.text.Text$7.**invalidated(Text.java)
 at javafx.beans.property.**ObjectPropertyBase.**markInvalid(**
 ObjectPropertyBase.java)
 at javafx.beans.property.**ObjectPropertyBase.bind(**
 ObjectPropertyBase.java)
 at javafx.css.**StyleableObjectProperty.bind(**
 StyleableObjectProperty.java)
 at com.sun.javafx.scene.control.**skin.LabeledText.init(**
 LabeledText.java)
 at com.sun.javafx.scene.control.**skin.LabeledSkinBase.init(**
 LabeledSkinBase.java)
 at com.sun.javafx.scene.control.**skin.LabelSkin.init(**
 LabelSkin.java)
 at javafx.scene.control.Label.**createDefaultSkin(Label.java)
 at javafx.scene.control.Control.**impl_processCSS(Control.java)
 at javafx.scene.Parent.impl_**processCSS(Parent.java)
 at javafx.scene.Node.processCSS(**Node.java)
 at javafx.scene.Scene.doCSSPass(**Scene.java)
 at javafx.scene.Scene.**preferredSize(Scene.java)
 at javafx.scene.Scene.impl_**preferredSize(Scene.java)



 Am 20.05.2013 um 19:04 schrieb Niklas Therning nik...@therning.org:

  Source code and build instructions for the BrickBreaker JavaFX sample on
 iOS/RoboVM is now available online [1]. The static libs included in that
 download have been compiled from my fork [2] of Danno Ferrin's JDK7
 backport of openjfx [3]. For build instructions please see [4].

 [1]
 http://blog.robovm.org/2013/**05/brickbreaker-javafx-sample-**
 on-ios-robovm-source-code-**released.htmlhttp://blog.robovm.org/2013/05/brickbreaker-javafx-sample-on-ios-robovm-source-code-released.html
 [2] 
 https://bitbucket.org/**ntherning/jfx78https://bitbucket.org/ntherning/jfx78
 [3] https://bitbucket.org/narya/**jfx78https://bitbucket.org/narya/jfx78
 [4] 
 https://gist.github.com/**ntherning/5613607https://gist.github.com/ntherning/5613607

 /Niklas


 On Tue, May 14, 2013 at 9:30 AM, Niklas Therning nik...@therning.org
 wrote:

  Hi,

 I'll clean up the code and post it somewhere later this week. We're not
 using OpenJDK's class libraries. It's Android's.


 On Mon, May 13, 2013 at 6:38 PM, steve.x.northo...@oracle.com wrote:

  Niklas!!!

 This is very cool.  Please make your work available as soon as possible
 so others can try it out.  I have played a bit with RoboVM and looked
 into
 what would be required to port JavaFX to it but did not get the time
 to do
 a deep dive.  Are you using the OpenJDK for the class libraries?

 Steve


 On 13/05/2013 5:32 AM, Niklas Therning wrote:

  Hi,

 I've managed to get OpenJFX running on iOS using RoboVM. Please see
 the
 RoboVM blog [1] for a quick video of it.

 I'd like to say thank you for writing such great code! BrickBreaker
 almost
 worked out of the box! I had to remove/stub out font related stuff of
 course and PlatformLogger had to be copied from OpenJDK. Also had to
 fix
 a
 tiny bug in the native glass code [2] and an NPE in
 PlatformUtil.getRTDir()
 when PlatformUtil.class isn't available in any jar file [3].

 Do you have an ETA on the open-sourcing of the font related code? It
 would
 be a fun challenge to get most