Good detective work, Raju

I was always worried about the performance of the TextLayout classes; we
were going to move to
them because the TextField class was declared at end-of-life, and we needed
the bidirectional text layout for a contract. But the speed of rendering
text was obviously slower with the new classes than
the old text field which was implemented natively.

I think there were a few places we were using text fields inefficiently,
like in the debugger, where each additional line of output was causing the
whole field to re-render.




On Fri, Dec 16, 2011 at 8:02 AM, Raju Bitter <
[email protected]> wrote:

> Ok, with those changes I was able to build OL with Flex 4.5,
> generating SWF11 files (checked the 4th byte of the generated SWF
> file, and it's "0B", for 4.1 it's "0A").
>
> On Fri, Dec 16, 2011 at 1:35 PM, Raju Bitter
> <[email protected]> wrote:
> > Henry, I finally had time to look back into the problem with compiler
> exception:
> > Changes in Flex Hero
> > Note: TextLayoutFormatValueHolder was a leightweight replacement for
> > an extremely inefficient TextLayoutFormat class. Since TLF 2.0 the
> > TextLayoutFormats implementation has been completely replaced by the
> > code of TextLayoutFormatValueHolder. So since Flex Hero (4.5) this
> > class is no longer available. In this case, simply replace
> > TextLayoutFormatValueHolder with TextLayoutFormats in the above
> > example.
> >
> > I replaced TextLayoutFormatValueHolder with TextLayoutFormat (no "s"
> > here, that's a typo in the Adobe docs) within
> > LzTLFTextFieldHostFormat.as and LzTLFTextFieldStyleResolver.as. Built
> > the LFC again, and got the following errors.
> >
> > LzTLFTextFieldHostFormat needs to implement the following methods:
> >  + Interface method get clearFloats in namespace
> > flashx.textLayout.formats:ITextLayoutFormat
> >  + Interface method get linkActiveFormat in namespace
> > flashx.textLayout.formats:ITextLayoutFormat
> >  + Interface method get linkHoverFormat in namespace
> > flashx.textLayout.formats:ITextLayoutFormat
> >  + Interface method get linkNormalFormat in namespace
> > flashx.textLayout.formats:ITextLayoutFormat
> >  + Interface method get listAutoPadding in namespace
> > flashx.textLayout.formats:ITextLayoutFormat
> >  + Interface method get listMarkerFormat in namespace
> > flashx.textLayout.formats:ITextLayoutFormat
> >  + Interface method get listStylePosition in namespace
> > flashx.textLayout.formats:ITextLayoutFormat
> >  + Interface method get listStyleType in namespace
> > flashx.textLayout.formats:ITextLayoutFormat
> >  + Interface method get styleName in namespace
> > flashx.textLayout.formats:ITextLayoutFormat
> >  + Interface method get wordSpacing in namespace
> > flashx.textLayout.formats:ITextLayoutFormat
> >  + Interface method getStyle in namespace
> > flashx.textLayout.formats:ITextLayoutFormat
> >
> > When I imlemented the missing methods as dummy methods, the LFC was
> > compiled without any errors.
> >
> > I think what OL needs is a good guide for upgrading the Flex SDK to
> > newer versions (including adding a new runtime radio to the dev
> > console). Without that, it will be difficult to maintain the compiler,
> > and keep the SWF runtime up-to-date.
> >
> > On Wed, Nov 16, 2011 at 1:02 AM, Raju Bitter
> > <[email protected]> wrote:
> >> Thanks, Henry. No problem. I'll look into this a bit more tomorrow,
> >> and already have a basic understanding how the integration works.
> >>
> >> On Tue, Nov 15, 2011 at 11:06 PM, Henry Minsky <[email protected]>
> wrote:
> >>> eek, seems like a few things need to be adjusted. I'm out of town for
> this
> >>> week, maybe I can
> >>> look at this when I get back.
> >>>
> >>> On Tue, Nov 15, 2011 at 2:52 PM, Raju Bitter
> >>> <[email protected]> wrote:
> >>>>
> >>>> Henry,
> >>>>
> >>>> following your instructions, I noticed these things when upgrading the
> >>>> Flex SDK to 4.5:
> >>>> 1) lib/flexTasks.jar does not exist any more
> >>>>
> >>>> 2) the configuration of the Flex version, runtime version and path
> >>>> information for playergobal.swc is spread out over a number of Java
> >>>> classes, configuration files and probably other places. Is there any
> >>>> list available which files need to be changed when a new Flash
> >>>> version/runtime is added?
> >>>>
> >>>> 3) How is the value of
> >>>>
> >>>>
> <path-element>libs/player/{targetPlayerVersion}.{targetPlayerMinorVersion}/playerglobal.swc</path-element>
> >>>> set?
> >>>>
> >>>> 4) Using Flex 4.5 means, the playerglobal.swc will be 10.2, but the
> >>>> generated SWF format will be Flash 11. Does that mean we should switch
> >>>> the default runtime to Flash 11, or should the user be able to select
> >>>> the version (10.1 or 11.0)?
> >>>>
> >>>> Here are the things I've tried so far:
> >>>> a) copy the files from the new Flex version over into the $LPS_HOME
> >>>> directory structure, following the guideline file Henry created
> >>>>
> >>>> b) Update the LPS.java player version in
> >>>> WEB-INF/lps/server/src/org/openlaszlo/server/LPS.java
> >>>> public static String mDefaultFlexVersion = "10.2";
> >>>>
> >>>> c) Added the new Flex version to the list of known versions in
> >>>> WEB-INF/lps/server/src/org/openlaszlo/compiler/Compiler.java:
> >>>> public static List<String> KNOWN_FLEX_VERSIONS =
> >>>>        Arrays.asList("10.0", "10.1", "10.2");
> >>>>
> >>>> d) Added the swf11 runtime switch in
> >>>> org.openlaszlo.sc.SWF9External.java#compileTranslationUnits
> >>>>     if ("swf11".equals((String)options.get(Compiler.RUNTIME))) {
> >>>>          cmd.add("-target-player=10.2");
> >>>>     } else if ("swf10".equals((String)options.get(Compiler.RUNTIME)))
> {
> >>>>        if ("10.1".equals(flex_version)) {
> >>>>
> >>>> e) LFC build folder WEB-INF/lps/lfc
> >>>> In build.xml, add "11" to var swfruntimes.
> >>>> The individual build shell scripts access the flex and runtime default
> >>>> settings in
> >>>> WEB-INF/lps/config/lps.properties
> >>>> # Default runtime
> >>>> compiler.runtime.default=swf11
> >>>> compiler.flex_version.default=10.2
> >>>>
> >>>> Now, when I try to build, I get the following error message when
> >>>> building the LFC SWC files:
> >>>> lzl:
> >>>>     [echo] Compiling
> >>>> /home/raju/src/svn/openlaszlo/trunk45/lps/includes/lfc/LFC10.swc
> >>>>     [echo] Runtime: swf10
> >>>>     [java] compiler output is Loading configuration file
> >>>>
> /home/raju/src/svn/openlaszlo/trunk45/WEB-INF/frameworks/flex-config.xml
> >>>>     [java]
> >>>>     [java] Exception compiling scriptfile:
> >>>> org.openlaszlo.sc.CompilerError: line unknown: Error: Type was not
> >>>> found or was not a compile-time constant: TextLayoutFormatValueHolder,
> >>>> in line:             attr:TextLayoutFormatValueHolder,
> >>>>     [java] line unknown: Error: Type was not found or was not a
> >>>> compile-time constant: TextLayoutFormatValueHolder, in line:
> >>>>  styleSelector:String):TextLayoutFormatValueHolder
> >>>>     [java] org.openlaszlo.sc.CompilerException:
> >>>> org.openlaszlo.sc.CompilerError: line unknown: Error: Type was not
> >>>> found or was not a compile-time constant: TextLayoutFormatValueHolder,
> >>>> in line:             attr:TextLayoutFormatValueHolder,
> >>>>     [java] line unknown: Error: Type was not found or was not a
> >>>> compile-time constant: TextLayoutFormatValueHolder, in line:
> >>>>  styleSelector:String):TextLayoutFormatValueHolder
> >>>>     [java]     at
> org.openlaszlo.sc.Compiler.compile(Compiler.java:430)
> >>>>     [java]     at org.openlaszlo.sc.lzsc.compile(lzsc.java:127)
> >>>>     [java]     at org.openlaszlo.sc.lzsc.compile(lzsc.java:366)
> >>>>     [java]     at org.openlaszlo.sc.Main.main(Main.java:23)
> >>>>     [java] Compilation aborted.
> >>>>
> >>>> BUILD FAILED
> >>>> /home/raju/src/svn/openlaszlo/trunk45/WEB-INF/lps/lfc/build.xml:128:
> >>>> javax.script.ScriptException:
> >>>> sun.org.mozilla.javascript.internal.WrappedException: Wrapped The
> >>>> following error occurred while executing this line:
> >>>> /home/raju/src/svn/openlaszlo/trunk45/WEB-INF/lps/lfc/build.xml:80:
> >>>> Java returned: 1 (<Unknown source>#28) in <Unknown source> at line
> >>>> number 28
> >>>>        at
> >>>>
> com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:110)
> >>>>        at
> >>>>
> com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:124)
> >>>>        at
> >>>> javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:247)
> >>>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>>> ...
> >>>>
> >>>> What should I do next? I still see that the system tries to build an
> >>>> LFC10SWC, not an LFC11.SWC. And the error is probably connected to an
> >>>> API change for the TLF.
> >>>>
> >>>> Any help appreciated. The runtime information is really spread out
> >>>> over MANY files.
> >>>>
> >>>> Raju
> >>>>
> >>>> On Tue, Nov 15, 2011 at 2:17 PM, Raju Bitter
> >>>> <[email protected]> wrote:
> >>>> > Ignacio,
> >>>> >
> >>>> > did you ever try to upgrade the compiler? I'm going to give it a try
> >>>> > today. Would be good to have the compiler upgraded before the 5.0
> >>>> > release.
> >>>> >
> >>>> > @Henry: If I run into any problems, I'd appreciate your help.
> >>>> >
> >>>> > Raju
> >>>> >
> >>>> > On Tue, Sep 13, 2011 at 2:43 PM, Amy Muntz <
> [email protected]>
> >>>> > wrote:
> >>>> >> Hi Ignacio,
> >>>> >>
> >>>> >> Yes - it would be great if you could work on SWF12 support.  Let us
> >>>> >> know how
> >>>> >> it goes and if you get stuck, please don't hesitate to send email.
> This
> >>>> >> would be a great step forward!
> >>>> >>
> >>>> >> Thanks so much!
> >>>> >> Amy
> >>>> >>
> >>>> >>
> >>>> >>
> >>>> >> On Mon, Sep 12, 2011 at 7:44 PM, Donald Anderson <
> [email protected]>
> >>>> >> wrote:
> >>>> >>>
> >>>> >>> Thanks, Henry.
> >>>> >>> Ignacio, I also worked on this code, though not as recently as
> Henry.
> >>>> >>> So I may be able to help too if you get stuck.
> >>>> >>> Thanks for volunteering to work on this!
> >>>> >>> - Don
> >>>> >>> On Sep 12, 2011, at 6:56 PM, Henry Minsky wrote:
> >>>> >>>
> >>>> >>> I was the one who updated to the last SDK, I could help you out
> with
> >>>> >>> trying to update.
> >>>> >>>
> >>>> >>> I had some steps I wrote up in a file in the sources, in
> >>>> >>> 3rd-party/how-to-copy-flex
> >>>> >>>
> >>>> >>> There are probably better ways to grab the flex SDK bits than
> what I
> >>>> >>> did,
> >>>> >>> but this is a place to start. I can help out if there are any
> changes
> >>>> >>> to the
> >>>> >>> command line calls to
> >>>> >>> invoke Flex.
> >>>> >>>
> >>>> >>>  In the file
> >>>> >>> WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9External.java
> >>>> >>> there is code which builds the command args that call the Flex
> >>>> >>> compiler. It
> >>>> >>> might be necessary to modify these if any args have changed or
> been
> >>>> >>> added to
> >>>> >>> mxmlc or compc
> >>>> >>>
> >>>> >>>
> >>>> >>>
> >>>> >>>
> >>>> >>> On Mon, Sep 12, 2011 at 3:49 PM, Ignacio Lopez
> >>>> >>> <[email protected]>
> >>>> >>> wrote:
> >>>> >>>>
> >>>> >>>> OL is missing from A LOT of new things in Flash by being stuck
> with
> >>>> >>>> the
> >>>> >>>> old SDK and swf formats...Any plans / timeframe to upgrade to
> Flex
> >>>> >>>> 4.5 SDK
> >>>> >>>> and support swf12?
> >>>> >>>> I can volunteer some time to help if someone points me in the
> right
> >>>> >>>> direction =)
> >>>> >>>
> >>>> >>>
> >>>> >>>
> >>>> >>> --
> >>>> >>> Henry Minsky
> >>>> >>>
> >>>> >>>
> >>>> >>>
> >>>> >>> <howto-copy-flex>
> >>>> >>>
> >>>> >>> --
> >>>> >>> Don Anderson
> >>>> >>> Java/C/C++, Berkeley DB, systems consultant
> >>>> >>>
> >>>> >>> voice: 617-306-2057
> >>>> >>> email: [email protected]
> >>>> >>> www: http://www.ddanderson.com
> >>>> >>> blog: http://libdb.wordpress.com
> >>>> >>>
> >>>> >>>
> >>>> >>>
> >>>> >>>
> >>>> >>
> >>>> >>
> >>>> >
> >>>
> >>>
> >>>
> >>> --
> >>> Henry Minsky
> >>>
> >>>
> >>>
> >>>
>



-- 
Henry Minsky

Reply via email to