Re: [Development] Adding new third party component three.js to Qt?

2015-01-09 Thread Keränen Pasi
​Hi Mark,


thank you for bringing this to my attention!


I hadn't noticed that the Qt 5.4 install doesn't have the documentation for 
QtCanvas3D under Docs, while it does have documentation for QtWebView tech 
preview. We're planning to do a Tech Preview 2 with Qt 5.4.1 as I've fixed 
quite a few bugs that will be visible to most users of Canvas3D since Tech 
Preview 1. I'll investigate why the docs are not building and try to sort it 
out for 5.4.1 release.


Meanwhile you should be able to build the documentation yourself from the 
QtCanvas3D sources with make docs. As I said, best option at this point is to 
get the latest from https://codereview.qt-project.org/qt/qtcanvas3d as there 
are quite a few bug fixes done since TP1.


Regards,

Pasi



From: development-bounces+pasi.keranen=theqtcompany@qt-project.org 
development-bounces+pasi.keranen=theqtcompany@qt-project.org on behalf of 
Mark Gaiser mark...@gmail.com
Sent: Friday, January 9, 2015 5:01 PM
To: development@qt-project.org
Subject: Re: [Development] Adding new third party component three.js to Qt?

On Fri, Jan 9, 2015 at 3:39 PM, Keränen Pasi 
pasi.kera...@theqtcompany.commailto:pasi.kera...@theqtcompany.com wrote:
Hi Louai,

The changes required to the library were originally quite large. But
thanks to the bug fixes in V4VM, maturing of Canvas3D and writing of some
wrapper classes to make e.g. Image loading look and smell like in HTML
land, the delta has been getting smaller and smaller. Here is a pretty
complete list based on quick compare between the R69 original three.js and
the Canvas3D port of the R69 release of three.js. There might be something
I’m forgetting to mention here. But as I said the delta has been getting
smaller and should get even smaller in Qt 5.5 and 5.6. But there will be
some delta always as QtQuick is not HTML.

* We don’t have performance timers in Qt Quick JS, so the Clock class must
be modified to not use those.

* In some files the class is declared with syntax of ( function (THREE) {
blahblabh }( THREE ) ); that V4VM seems to dislike and in some cases self
executing functions don’t seem to work, V4VM just refuses to load the
file. I haven’t been able to replicate this behaviour with a small
example, so probably it’s relates to some complex situation arising when
loading a large JavaScript file OR then there is some minute detail in
that self executing function that I can’t spot.

* Resizing of images has to be modified as that is usually done with HTML
trickery that doesn’t work at the moment with Canvas3D.

* Accessor functions defined in prototypes with:
get x() { return this._x },
set x(value)  { this._x = value; this.onChangeCallback(); }

* Must be rewritten with the (older?) syntax of:
this.__defineGetter__(x, function(){return this._x;});
this.__defineSetter__(x, function(value){this._x =
value;this.onChangeCallback();});

* Canvas3DRenderer is new code, ported from WebGL. Main differences are to
do with initialization differences between Canvas3D and WebGL. Handling of
some Canvas3D Tech Preview quirks like the handling of TypedArray wrappers
(should be ok to remove in 5.5 when we have proper V4VM TypedArrays in
place and function overloading should work). And I’ve wanted to support
the logging features of Canvas3D objects, by setting the .name attribute
of some objects so that when you turn on logging you can see what
UniformAttribute, what Shader3D object you are looking at in the logs..
Plus a couple of workarounds for weird behavior (e.g. boolean as attribute
name in the renderer causes V4VM not to load the file, but again a minimal
example of this doesn’t have this problem so can’t replicate it). Again,
the delta should get smaller with WebGLRenderer, but I’d expect there to
always be some delta.

That is all the delta I can list quickly, if you are interested in details
just get the R69 release from three.js git and the stable branch of
QtCanvas3D port and do a detailed compare of those.

Reagrding this delta I’ve thought a bit how to reorganise the delta so
that it could live in a separate folder inside three.js. If I can make
that happen, then maybe it would be possible to get these few changes in
to three.js upstream and make it possible to always use the latest from
there as well if one so wishes. But that will require a bit more work on
V4VM I think before we’re there. E.g. Add support for binary file loading
with XMLHttpRequest and track down why those few anomalies occur when
loading self executing functions declared in the manner they are in
three.js so that the upstream code should run as much as possible
unmodified on top of Canvas3D with just the few changes we need in place.

Regards,
Pasi



On 08/01/15 12:54, Al-Khanji Louai 
louai.al-kha...@theqtcompany.commailto:louai.al-kha...@theqtcompany.com
wrote:

 On Wednesday 7. January 2015 06.03.14tel:2015%2006.03.14 Keränen Pasi 
 wrote:
  Hi,
 
  I¹d like to open the discussion on including 

Re: [Development] GIMP QML exporter script (project not on Gerrit)

2015-01-09 Thread William Hallatt
Hi Tuukka,

No, it wasn't that at all, the documentation is what saved me.

My problem stemmed from having committed a whole bunch of changes and then
having to retro-fit Change-Id's etc (which meant a git learning curve for
me) since I didn't initially consider making any changes (i.e. my git
environment wasn't set up as per the Setting up Gerrit instructions).
Had I not ended up in a situation where I had to work back to front, it
would have gone a lot more smoothly.

The only recommendation I have at the moment is perhaps to improve on the
qtrepotools documentation (if it exists, I haven't been able to find it)
and perhaps a pre-commit hook (I do not know if such a thing is possible)
that could do some sanitizing up front?

Thanks again for a spectacular framework!

Kind regards,
William.



On 9 January 2015 at 09:35, Turunen Tuukka tuukka.turu...@theqtcompany.com
wrote:


  Thanks, William.

  If some of the instructions were misleading, hard to find or inadequate,
 please let us know. Intention is to make it straightforward to contribute.
 In addition to your contribution we value your feedback for improving the
 instructions.

   Yours,


  Tuukka

   From: William Hallatt goblincod...@gmail.com
 Date: Friday 9 January 2015 07:02
 To: William Hallatt goblincod...@gmail.com
 Cc: development@qt-project.org development@qt-project.org
 Subject: Re: [Development] GIMP QML exporter script (project not on
 Gerrit)

   Thanks for all the assistance folks.  Finally managed to submit to
 Gerrit and sort out all the sanity bot's reviews :)

  Have a good weekend,
 William.


___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Adding new third party component three.js to Qt?

2015-01-09 Thread Makkonen Sami


 -Original Message-
 From: development-bounces+sami.makkonen=theqtcompany.com@qt-
 project.org [mailto:development-
 bounces+sami.makkonen=theqtcompany@qt-project.org] On Behalf Of
 Keränen Pasi
 Sent: 7. tammikuuta 2015 8:03
 To: development@qt-project.org
 Subject: [Development] Adding new third party component three.js to Qt?
 
 Hi,
 
 I¹d like to open the discussion on including the three library as part of
 Qt 5.6 and onwards. Mainly because this would give our users a better
 experience if we¹d bundle the right, tested version of Three.js together
 with the Qt version it was tested on.
 
 I¹ve been pushing the Qt Canvas3D component onwards and timewise it should
 be landing to Qt 5.5 release. The WebGL-like API (non-conformance tested)
 it offers is very low level and most users will not like to work on that
 level. To that end I¹ve ported the WebGL based Three.js scenegraph library
 available at http://threejs.org on top of Canvas3D. You can find the
 latest version from master branch at https://github.com/tronlec/three.js
 
 The reason for picking this particular library over others are:
 * It¹s one of the most active WebGL scene graph projects out there.
 * It¹s well done, with examples, API documentation etc.
 * It has excellent support form community in the form of tutorials,
 websites, discussion forums etc.
 * It is available under permissive MIT license:
 https://github.com/mrdoob/three.js/blob/master/LICENSE
 
 In Qt 5.5 we¹ll include a few examples that will have this library as part
 of the examples.
 
 The library will for now at least need some porting effort to make it run
 on top of Canvas3D as there are some HTML depencencies that need to be
 handled, plus V4VM has a few quirks that need to be accounted for.
 Hopefully some of the V4VM quirks are bugs and will be fixed in due time,
 but the HTML dependencies do remain. And my current experience with
 graphics APIs is that you want to test the whole stack together. If we
 e.g. add support for new extensions in Canvas3D, that can activate new
 codepaths in Three.js that again need testing and possibly new Qt specific
 delta must be added to the three.js for those parts.
 
 
 Comments? Thoughts?


Please remember to update the licensing documentation 
(http://doc.qt.io/qt-5/licensing.html) to include the three.js. Also as a side 
note links to Canvas 3D should be also added to appropriate places e.g. 
Graphics topic (http://doc.qt.io/qt-5/topics-graphics.html#opengl-and-3d). 


--
Sami

 
 Regards,
 Pasi Keränen
 Software Specialist
 The Qt Company
 http://www.qt.io
 
 
 ___
 Development mailing list
 Development@qt-project.org
 http://lists.qt-project.org/mailman/listinfo/development
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Upgrading the sources to C++11 keywords (Q_NULLPTR, etc.)

2015-01-09 Thread Thiago Macieira
On Friday 09 January 2015 20:19:36 André Pönitz wrote:
 In some case these macros even expand to something else than the obviously
 related C++ keyword, so potential benefits gained from using the actual
 feature have to be weighed with the costs of obfuscation.

They expand to the correct keyword when the keyword is permitted, so there's 
no mistake. They expand to something else that will not affect the code unduly 
if the keyword is not permitted.

Do you have anything in mind for when they'd expand unexpectedly?

  I'd like to propose the following.
  
  Policy per keyword:
   * Q_NULLPTR - strongly encouraged
  
  Use it whenever your literal zero is a null pointer. You can leave it out
  when it cannot be mistaken for a zero and it would otherwise make the
  source code harder to read.
  
  Note that Qt still compiles with C++98, so you can't use Q_NULLPTR for
  disambiguation.
 
 No, please, not.
 
 C++ 'nullptr' only gives a benefit over '0' in the rare cases where it
 helps for disambiguation. I would not really like a policy encouraging
 'nullptr' when '0' is just fine, but at least that would be tolerable.
 
 On the other hand, 'Q_NULLPTR' does not even serve the 'disambiguation'
 purpose, so it's really useless annoying line noise.
 
 I propose to continue to use '0' until Qt can switch over to C++11
 and then re-open the discussion with 'nullptr - mildly encouraged'.

Fair enough.

Marc, what's your opinion?

Note that the disambiguation need not be only by the compiler. If the code is 
simpler to understand because you marked something as a pointer, then I think 
you should use the macro.

   * Q_DECL_FINAL - optional, use with care
  
  There's a small benefit in optimisation by devirtualising calls. Use it
  with care.
  
  Use in public classes is discouraged, since people can compile with a
  C++98
  and derive / override what they shouldn't.
 
 Another reason is that even if we think it should be final, the user of
 the class (or rather sub-classes) might disagree.

We make the call because we designed the code. If the class isn't intended to 
be derived from, then let the user know.

   * Q_DECL_OVERRIDE - required in new code, don't add to old code
  
  Always add Q_DECL_OVERRIDE for any override in new classes you write. This
  supersedes the need for the virtual keyword -- add it or not, it's up to
  you.
  
  DO NOT add to existing classes, including for new overrides to existing
  classes. Clang 3.6 has a new warning about inconsistent use of this
  keyword, so adding to one place requires adding to all overrides in that
  class. Therefore, this needs to be done fully in each class and that's
  not a whitespace correction error.
 
 In my opinion Q_DECL_OVERRIDE brings sufficient benefit to generally
 encourage its use despite of the line noise it brings. However, since
 'virtual' is not needed in case Q_DECL_OVERRIDE is used the rule should be
 to leave 'virtual' out/remove it in that case.

Indeed.

 [1] - All 'ok' under the assumption that this does not affect code that
 does not need to stay compatible with C++98. Such code should rather use
 C++11 keywords directly.

That's still per compiler, since compilers added support for the keywords at 
different times. Therefore, the use of the Q macro is required, unless you've 
already surrounded the code with the matching #ifdef.

For example:

#if defined(Q_COMPILER_CONSTEXPR)  defined(Q_COMPILER_UNIFORM_INIT)
constexpr Foo() : array{1, 2, 3} ()
#endif

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Upgrading the sources to C++11 keywords (Q_NULLPTR, etc.)

2015-01-09 Thread Giuseppe D'Angelo
On 9 January 2015 at 20:19, André Pönitz apoen...@t-online.de wrote:

 C++ 'nullptr' only gives a benefit over '0' in the rare cases where it
 helps for disambiguation. I would not really like a policy encouraging
 'nullptr' when '0' is just fine, but at least that would be tolerable.

Not only that, compilers are starting to complain about 0 used in
place of NULL / nullptr, for instance GCC under
-Wzero-as-null-pointer-constant.

-- 
Giuseppe D'Angelo
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] [QtIFW] Offline from online?

2015-01-09 Thread Koehne Kai


 -Original Message-
 From: Konstantin Podsvirov [mailto:konstan...@podsvirov.pro]
 Sent: Thursday, January 08, 2015 10:07 AM
 To: Koehne Kai; development@qt-project.org
 Subject: Re: [Development] [QtIFW] Offline from online?
 
 
 
 17.12.2014, 12:53, Koehne Kai kai.koe...@theqtcompany.com:
   - Original Message-
  From: development-bounces+kai.koehne=theqtcompany.com@qt-
  Subject: [Development] [QtIFW] Offline from online?
  What about the creation of the offline installers based on shared in
  the online repository components?
 
  So far the IFW doesn't offer such functionality out of the box. Could you
 elaborate a bit on the use case you have in mind?
 
 When developing a large project consisting of several modules (for example,
 Qt Framework) that accompanies each module can build and upload a
 compressed binary repository on the server to use this module, developers
 of other modules.
 
 Now the developers of the modules do not need to build third-party
 modules to develop your module.
 
 So. For each module there is an online repository. All happy.
 
 But, we still need to create the offline installer to install the project on a
 separate machine without access to the online repository. To create such an
 installer, we need not compressed packages of each module. We take all of
 these packages and will be compressed in to record installerbase. Why?
 Each module has already been built and compressed. It seems to me online
 repository contains enough information to create the offline installer.

I see, thanks for the details.

 You only need to teach binarycreator as the option to take some
 components are not from the folder with the packages (option-p), and from
 an online repository.

 I believe that this functionality will be in demand.

 Kai, what do you think? It is difficult to do it?

I agree that it should be doable. I'm not that much into the details though to 
say how much effort it would be... There are others that know that part of the 
IFW better than me :)

Could you file a feature request on bugreports.qt.io , project Qt Installer 
Framework, so that we can discuss this there further?

Thanks

Kai
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


[Development] 5.4.1 branch has now been added to the CI

2015-01-09 Thread Sarajärvi Tony
Hi!

The subject says it all...

-Tony

Tony Sarajärvi
CI Tech Lead
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Adding new third party component three.js to Qt?

2015-01-09 Thread Keränen Pasi
Hi Louai,

The changes required to the library were originally quite large. But
thanks to the bug fixes in V4VM, maturing of Canvas3D and writing of some
wrapper classes to make e.g. Image loading look and smell like in HTML
land, the delta has been getting smaller and smaller. Here is a pretty
complete list based on quick compare between the R69 original three.js and
the Canvas3D port of the R69 release of three.js. There might be something
I’m forgetting to mention here. But as I said the delta has been getting
smaller and should get even smaller in Qt 5.5 and 5.6. But there will be
some delta always as QtQuick is not HTML.

* We don’t have performance timers in Qt Quick JS, so the Clock class must
be modified to not use those.

* In some files the class is declared with syntax of ( function (THREE) {
blahblabh }( THREE ) ); that V4VM seems to dislike and in some cases self
executing functions don’t seem to work, V4VM just refuses to load the
file. I haven’t been able to replicate this behaviour with a small
example, so probably it’s relates to some complex situation arising when
loading a large JavaScript file OR then there is some minute detail in
that self executing function that I can’t spot.

* Resizing of images has to be modified as that is usually done with HTML
trickery that doesn’t work at the moment with Canvas3D.

* Accessor functions defined in prototypes with:
get x() { return this._x },
set x(value)  { this._x = value; this.onChangeCallback(); }

* Must be rewritten with the (older?) syntax of:
this.__defineGetter__(x, function(){return this._x;});
this.__defineSetter__(x, function(value){this._x =
value;this.onChangeCallback();});

* Canvas3DRenderer is new code, ported from WebGL. Main differences are to
do with initialization differences between Canvas3D and WebGL. Handling of
some Canvas3D Tech Preview quirks like the handling of TypedArray wrappers
(should be ok to remove in 5.5 when we have proper V4VM TypedArrays in
place and function overloading should work). And I’ve wanted to support
the logging features of Canvas3D objects, by setting the .name attribute
of some objects so that when you turn on logging you can see what
UniformAttribute, what Shader3D object you are looking at in the logs..
Plus a couple of workarounds for weird behavior (e.g. boolean as attribute
name in the renderer causes V4VM not to load the file, but again a minimal
example of this doesn’t have this problem so can’t replicate it). Again,
the delta should get smaller with WebGLRenderer, but I’d expect there to
always be some delta.

That is all the delta I can list quickly, if you are interested in details
just get the R69 release from three.js git and the stable branch of
QtCanvas3D port and do a detailed compare of those.

Reagrding this delta I’ve thought a bit how to reorganise the delta so
that it could live in a separate folder inside three.js. If I can make
that happen, then maybe it would be possible to get these few changes in
to three.js upstream and make it possible to always use the latest from
there as well if one so wishes. But that will require a bit more work on
V4VM I think before we’re there. E.g. Add support for binary file loading
with XMLHttpRequest and track down why those few anomalies occur when
loading self executing functions declared in the manner they are in
three.js so that the upstream code should run as much as possible
unmodified on top of Canvas3D with just the few changes we need in place.

Regards,
Pasi



On 08/01/15 12:54, Al-Khanji Louai louai.al-kha...@theqtcompany.com
wrote:

 On Wednesday 7. January 2015 06.03.14 Keränen Pasi wrote:
  Hi,
 
  I¹d like to open the discussion on including the three library as
part of
  Qt 5.6 and onwards. Mainly because this would give our users a better
  experience if we¹d bundle the right, tested version of Three.js
together
  with the Qt version it was tested on.
 
  I¹ve been pushing the Qt Canvas3D component onwards and timewise it
 should
  be landing to Qt 5.5 release. The WebGL-like API (non-conformance
tested)
  it offers is very low level and most users will not like to work on
that
  level. To that end I¹ve ported the WebGL based Three.js scenegraph
library
  available at http://threejs.org on top of Canvas3D. You can find the
  latest version from master branch at
https://github.com/tronlec/three.js
 
  The reason for picking this particular library over others are:
  * It¹s one of the most active WebGL scene graph projects out there.
  * It¹s well done, with examples, API documentation etc.
  * It has excellent support form community in the form of tutorials,
  websites, discussion forums etc.
  * It is available under permissive MIT license:
  https://github.com/mrdoob/three.js/blob/master/LICENSE
 
  In Qt 5.5 we¹ll include a few examples that will have this library as
part
  of the examples.
 
  The library will for now at least need some porting effort to make it
run
  on top of Canvas3D as there are some HTML 

Re: [Development] Adding new third party component three.js to Qt?

2015-01-09 Thread Mark Gaiser
On Fri, Jan 9, 2015 at 3:39 PM, Keränen Pasi pasi.kera...@theqtcompany.com
wrote:

 Hi Louai,

 The changes required to the library were originally quite large. But
 thanks to the bug fixes in V4VM, maturing of Canvas3D and writing of some
 wrapper classes to make e.g. Image loading look and smell like in HTML
 land, the delta has been getting smaller and smaller. Here is a pretty
 complete list based on quick compare between the R69 original three.js and
 the Canvas3D port of the R69 release of three.js. There might be something
 I’m forgetting to mention here. But as I said the delta has been getting
 smaller and should get even smaller in Qt 5.5 and 5.6. But there will be
 some delta always as QtQuick is not HTML.

 * We don’t have performance timers in Qt Quick JS, so the Clock class must
 be modified to not use those.

 * In some files the class is declared with syntax of ( function (THREE) {
 blahblabh }( THREE ) ); that V4VM seems to dislike and in some cases self
 executing functions don’t seem to work, V4VM just refuses to load the
 file. I haven’t been able to replicate this behaviour with a small
 example, so probably it’s relates to some complex situation arising when
 loading a large JavaScript file OR then there is some minute detail in
 that self executing function that I can’t spot.

 * Resizing of images has to be modified as that is usually done with HTML
 trickery that doesn’t work at the moment with Canvas3D.

 * Accessor functions defined in prototypes with:
 get x() { return this._x },
 set x(value)  { this._x = value; this.onChangeCallback(); }

 * Must be rewritten with the (older?) syntax of:
 this.__defineGetter__(x, function(){return this._x;});
 this.__defineSetter__(x, function(value){this._x =
 value;this.onChangeCallback();});

 * Canvas3DRenderer is new code, ported from WebGL. Main differences are to
 do with initialization differences between Canvas3D and WebGL. Handling of
 some Canvas3D Tech Preview quirks like the handling of TypedArray wrappers
 (should be ok to remove in 5.5 when we have proper V4VM TypedArrays in
 place and function overloading should work). And I’ve wanted to support
 the logging features of Canvas3D objects, by setting the .name attribute
 of some objects so that when you turn on logging you can see what
 UniformAttribute, what Shader3D object you are looking at in the logs..
 Plus a couple of workarounds for weird behavior (e.g. boolean as attribute
 name in the renderer causes V4VM not to load the file, but again a minimal
 example of this doesn’t have this problem so can’t replicate it). Again,
 the delta should get smaller with WebGLRenderer, but I’d expect there to
 always be some delta.

 That is all the delta I can list quickly, if you are interested in details
 just get the R69 release from three.js git and the stable branch of
 QtCanvas3D port and do a detailed compare of those.

 Reagrding this delta I’ve thought a bit how to reorganise the delta so
 that it could live in a separate folder inside three.js. If I can make
 that happen, then maybe it would be possible to get these few changes in
 to three.js upstream and make it possible to always use the latest from
 there as well if one so wishes. But that will require a bit more work on
 V4VM I think before we’re there. E.g. Add support for binary file loading
 with XMLHttpRequest and track down why those few anomalies occur when
 loading self executing functions declared in the manner they are in
 three.js so that the upstream code should run as much as possible
 unmodified on top of Canvas3D with just the few changes we need in place.

 Regards,
 Pasi



 On 08/01/15 12:54, Al-Khanji Louai louai.al-kha...@theqtcompany.com
 wrote:

  On Wednesday 7. January 2015 06.03.14 Keränen Pasi wrote:
   Hi,
  
   I¹d like to open the discussion on including the three library as
 part of
   Qt 5.6 and onwards. Mainly because this would give our users a better
   experience if we¹d bundle the right, tested version of Three.js
 together
   with the Qt version it was tested on.
  
   I¹ve been pushing the Qt Canvas3D component onwards and timewise it
  should
   be landing to Qt 5.5 release. The WebGL-like API (non-conformance
 tested)
   it offers is very low level and most users will not like to work on
 that
   level. To that end I¹ve ported the WebGL based Three.js scenegraph
 library
   available at http://threejs.org on top of Canvas3D. You can find the
   latest version from master branch at
 https://github.com/tronlec/three.js
  
   The reason for picking this particular library over others are:
   * It¹s one of the most active WebGL scene graph projects out there.
   * It¹s well done, with examples, API documentation etc.
   * It has excellent support form community in the form of tutorials,
   websites, discussion forums etc.
   * It is available under permissive MIT license:
   https://github.com/mrdoob/three.js/blob/master/LICENSE
  
   In Qt 5.5 we¹ll include a few examples that will