Hi all

2009/12/9 Malte Timmermann <malte.timmerm...@sun.com>

>
>
> JiaXiang Liu wrote, On 12/09/09 10:24:
> > Hello all,
> >
> > 2009/12/8 Malte Timmermann <malte.timmerm...@sun.com>
> >
> >> I didn't review the patch, but just took a quick look.
> >>
> >> FontAlign is probably the wrong wording here at all.
> >>
> >> What you want to achieve is alignment of a text line.
> >> You should probably better call it TextLineAlignment or something like
> >> that.
> >>
> >>
> > OK,I will modify it.
> >
> >> Again - all calculations need to be dome in some upper layer, eg.
> >> EditEngine. Assuming that we really talk about text lign alignment,
> >> there is no need/reason to add a new enum in VCL.
> >>
> >
> > I only added a item in old enum in VCL. ALIGN_CENTER. you needn't to care
> > it. assume it is no use.
>
> If it is of no use, it shouldn't be introduced. No one will accept to
> have it in VCL then.
>
> >
> >> As I said, do the implementation in impedit3.cxx.
> >> Instead of the suggestion in my first email, don't use ALIGN_TOP/BOTTOM
> >> at all, but use the font metrics to calculate the correct position so
> >> that the normal output with ALIGN_BASELINE works.
> >>
> >>
> > I want to know where(which function?) can I use the font metrics to
> > calculate the correct position? and
> > how to use the font metrics to calculate?
>
> Look in impedit3.cxx, CreateLines. There you can see how the Ascent and
> Descent from the FormatterFontMetric is used.
>
> Since your alignment doesn't influent the line calculation, you don't
> need to use the new attr in CreateLines(), but only in Paint().
> In Paint, the x/y position is calculated, and the DrawText with
> Align_Baseline is used.
>
> > why do not use
> > ALIGN_TOP/BOTTOM?,the calculation is set in VCL.
> > I think it should be called by some functions.
>
> Because you have to adjust x/y in Paint() anyway.
> TOP and BOTTOM could help you to not do ascent/descent calculations
> yourself, but for CENTER you have to do it anyway.
> If you adjust x/y for all cases (top/bottom/center/baseline) to
> BASELINE, and don't use ALIGN_TOP/BOTTOM, all the rest should work
> automatically. Edit Mode as well as repaint mode.
>
>

what your mean about adjust x/y for all cases (top/bottom/center/baseline)
to
BASELINE?

do you mean that I should add some code in paint(...) function like this:

     TextAlign eAlign = aTmpFont.GetAlign();
     if ( eAlign == ALIGN_TOP )
     {
      aRealOutPos.Y() =......
      aRealOutPos.X() =....
     }
     if ( eAlign == ALIGN_BOTTOM )
     {
      aRealOutPos.Y() =......
      aRealOutPos.X() =....
     }
     if ( eAlign == ALIGN_BASELINE )
     {
      aRealOutPos.Y() =......
      aRealOutPos.X() =....
     }

but I think this is still works in edit mode.but not in non-edit mode.

so puzzled.I am afraid I will crash. ;-)

> Malte.
>
> >
> > Just like in editmode. in the function implEditEngine::print(...).this
> > function call setAlign(ALIGN_TOP),Then the alignment of text is TOP.
> > but it is in editmode.
> > my problem is : I can not set Align in non-edit mode.
>
>
> >
> >
> >
> >
> >> Then all the rest in the drawing layer should work automatically.
> >>
> >> And wrt. EE_PARA_FONTALIGN: If you decrease EE_ITEMS_START by one, and
> >> insert the new ID at the beginning, you don't have to manipulate the
> >> Version Maps, IIRC.
> >>
> >> The SvxFontAlignItem itself looks strange to me: Its bad design to use 4
> >> bool values instead of an enum, if only one value can be true, and
> >> exactly one value needs to be true.
> >>
> >>
> > I will improve.
> >
> >> Malte.
> >>
> >> JiaXiang Liu wrote, On 12/08/09 12:07:
> >>> Hello All,
> >>>
> >>>
> >>>
> >>> 2009/12/8 Armin Le Grand <armin.le.gr...@sun.com
> >>> <mailto:armin.le.gr...@sun.com>>
> >>>
> >>>     JiaXiang Liu schrieb:
> >>>
> >>>         Hi All,
> >>>
> >>>         2009/12/7 Malte Timmermann <malte.timmerm...@sun.com
> >>>         <mailto:malte.timmerm...@sun.com>
> >>>         <mailto:malte.timmerm...@sun.com <mailto:
> >> malte.timmerm...@sun.com>>>
> >>>            Hi LiuTao,
> >>>
> >>  >            given Armins explanation about the text primitive stuff,
> it
> >>>         seems it
> >>>            would be much easier to do the transformation to baseline in
> >>>            impedit3.cxx instead of manipulating the font alignment.
> >>>
> >>>         you mean I can only modify the impedit3.cxx to implement?
> >>>
> >>>     I do not know impedit3.cxx, but i would do the adaption (as
> >>>     described) in impTextBreakupHandler::impCreateTextPortionPrimitive.
> >>>     Nonetheless, even for pure VCL usage it is not sure if all usages
> >>>     can use the baseline when it is used. It looks like it was not used
> >>>     in editengine up to now, but maybe in SW. HDU should know.
> >>>
> >>>
> >>> yes,I have tryed so many times but have no result.I think it is not so
> >>> much difficult,just like to set the paragraph adjust left.when we set
> it
> >>> in edit mode it is ok , when in non-edit mode it is still ok.I guess if
> >>> there are some message should be transfered.
> >>>
> >>>
> >>>
> >>>
> >>>            Then it would probably also work out-of-the-box in non-edit
> >> mode.
> >>>         Still don't know how to do that. :-(
> >>>
> >>>     As described: You have a StartPosition (rInfo.mrStartPos) that
> >>>     defines where to draw the text. You have the TextAlign. If
> TextAlign
> >>>     != ALIGN_BASELINE, adapt StartPosition (use a local copy, of
> course)
> >>>     as if it is ALIGN_BASELINE. This means to add offsets vertically
> for
> >>>     horizontal text and probably vice-versa. The offsets depend on
> >>>     FontInfo information which You get with the VCL Font and an
> >>>     OutputDevice.
> >>>
> >>>
> >>> the font align is not a attribute of font.so it is painted in edit mode
> >>> in impleditengine::paint(...)
> >>> how to draw the alignment is in VCL.(function setalign)
> >>> I guess if there have a function called like : noeditview::paint(...)
> to
> >>> call the VCL to draw the alignment?
> >>>
> >>>
> >>> @Herbert
> >>>
> >>> Hello , Armin said you maybe know this.I wish you can help me....
> >>>
> >>>
> >>>            Malte.
> >>>
> >>>            Armin Le Grand wrote, On 12/07/09 12:33:
> >>>            > JiaXiang Liu schrieb:
> >>>            >> Hello Malte,Armin,
> >>>            >>
> >>>            >> Just Forward the email:
> >>>            >>
> >>>            >> 2009/12/7 JiaXiang Liu <liujiaxi...@gmail.com
> >>>         <mailto:liujiaxi...@gmail.com>
> >>>            <mailto:liujiaxi...@gmail.com <mailto:liujiaxi...@gmail.com
> >>
> >>>            >> <mailto:liujiaxi...@gmail.com
> >>>         <mailto:liujiaxi...@gmail.com> <mailto:liujiaxi...@gmail.com
> >>>         <mailto:liujiaxi...@gmail.com>>>>
> >>>
> >>>            >>
> >>>            >> Hello Malte,Armin
> >>>            >>
> >>>            >> @Malte
> >>>            >>
> >>>            >> I test that.It is so difficult.
> >>>            >>
> >>>            >> I setted a break point in outliner.cxx
> >>>            >> aDrawPortionHdl.Call(...).
> >>>            >> Then I find the many information is collected but not
> >>>         alignment.
> >>>            >>
> >>>            >> How to record the information about the currently used
> >>>         alignment?
> >>>            >> If I should add a Parameter in this area ?
> >>>            >>
> >>>            >> DrawPortionInfo aInfo( rStartPos, rText, nTextStart,
> >> nTextLen,
> >>>            >> rFont, nPara, nIndex, pDXArray, pWrongSpellVector,
> >>>            >> pFieldData, pLocale, rOverlineColor, rTextLineColor,
> >>>            >> nRightToLeft, bEndOfLine, bEndOfParagraph, bEndOfBullet);
> >>>            >>
> >>>            >> BTW,
> >>>            >> aDrawPortionHdl.Call(...). is called by
> >>>            >> void ImpEditEngine::Paint( OutputDevice* pOutDev,
> Rectangle
> >>>            >> aClipRec, Point aStartPos, sal_Bool bStripOnly, short
> >>>            nOrientation )
> >>>            >>
> >>>            >> and the pOutDev saved the alignment.
> >>>            >>
> >>>            >> This area is also not save paragraph adjust.I am so
> >> puzzled.
> >>>            >>
> >>>            >>
> >>>            >> @Armin
> >>>            >>
> >>>            >> Malte told me that you maybe know that I want to know.
> :-)
> >>>            >>
> >>>            > Maybe; i am responsible for DrawingLayer, not for Text
> >> engines;
> >>>            i just
> >>>            > have to work with TextEngines since no one really is
> >>>         responsible for
> >>>            > them currently; and Yes, they are somewhat complicated and
> >>>         grown
> >>>            code.
> >>>            > Malte once was responsible for them, thus in relation to
> >>>            > EditEngine/Outliner he may know more than me. I can help
> >> with
> >>>            > DrawingLayer and usage of TextParameters in prmitives,
> >> though.
> >>>            >>
> >>>            >> the question is :
> >>>            >> I am developing a new feature called "fontalign" It can
> >>>         set the
> >>>            >> text align top,center,baseline and bottom.
> >>>            >> In Impress,Create a new document, input some words in a
> >>>         text box
> >>>            >> in normal view.
> >>>            >> I can set the alignment successful in edit mode.
> >>>            >>
> >>>            > Is this already possible in the working/current code?
> >>>            > If Yes, where can i change those settings?
> >>>            >
> >>>            > If no (and it's a completely new feature) it has to be
> >>>            implemented not
> >>>            > only inside EditEngine/Outliner, evtl. new items there
> (not
> >>>         sure if
> >>>            > holding font alignment at the font itself is sufficient in
> >> all
> >>>            > situations) and in Paint/export/callbacks, but also in
> text
> >>>            primities,
> >>>            > their decompositions, exports and paintings.
> >>>            > I will set HDU on CC, he may now if holding alignment at
> the
> >>>            font will
> >>>            > be enough (if You use that currently).
> >>>            >
> >>>            >> but it can not store the setting when left the edit mode.
> >>>            >> It is OK in outline view,bucause in outline view it is
> also
> >> in
> >>>            >> edit mode.
> >>>            >>
> >>>            > That's right, that new feature has to be represented in
> >>>            TextPrimitives
> >>>            > and used by renderers for it.
> >>>            >
> >>>            > In short: DrawPortionInfo is the class which
> >>>         EditEngine/Outliner
> >>>            uses in
> >>>            > callback mode to export it's data (You already located
> >>>         that). The
> >>>            > FontAlignment info will be (i guess) at the
> >>>         DrawPortionInfo::mrFont
> >>>            > member which is also a 'Font' (the VCL class).
> >>>            >
> >>>
> >>>         yes,it can use the 'Font'(VCL class) member function like:
> >>>         (mrFont).SetAlign(ALIGN_TOP/../../..)
> >>>
> >>>            > Primitives do not use a Font class (they are designed to
> be
> >>>            transported
> >>>            > over an API later), so they use
> >>>            > drawinglayer::primitive2d::FontAttributes where the font
> is
> >>>            described
> >>>            > using FamilyName/StyleName/Weight and others. There is no
> >>>         alignment
> >>>            > currently since it was not used yet. FontAttributes is
> then
> >>>         used in
> >>>            > TextSimplePortionPrimitive2D. At render time, the helper
> >>>            > getVclFontFromFontAttributes is used to re-create a VCL
> Font
> >>>            from the
> >>>            > FontAttributes, but this is only ONE way to use/render
> text
> >>>         in the
> >>>            > future with primitives; to use VCL again. This will
> >>>         probably change.
> >>>            >
> >>>            > The point is that currently, font alignment is not part of
> >>>            > FontAttributes and is not transported. As can be seen in
> >>>            > getVclFontFromFontAttributes, ALIGN_BASELINE is assumed. I
> >>>         would
> >>>            not add
> >>>            > a font alignment to FontAttributes to keep it minimal (and
> >>>         it is not
> >>>            > necessary). The TextSimplePortionPrimitive2D (and it's
> >>>            derivates) are
> >>>            > low-level text portion holders and also have a implicit
> >>>         TextPosition
> >>>            > (part of the TextTransform), thus it would be best to
> adapt
> >> the
> >>>            implicit
> >>>            > TextStart position inside
> >>>            > impTextBreakupHandler::impCreateTextPortionPrimitive to
> >>>         always use
> >>>            > ALIGN_BASELINE.
> >>>            >
> >>>            > This is always possible using the FontInfo class and the
> >>>         offsets
> >>>            of the
> >>>            > font (bbaseline, height, etc...). This can be done in
> >>>            > impTextBreakupHandler::impCreateTextPortionPrimitive, see
> >>>         'apply
> >>>            local
> >>>            > offset'. rInfo.mrStartPos.Y() would need to be
> >>>         expanded/adapted when
> >>>            > text alignment is != ALIGN_BASELINE.
> >>>            >
> >>>
> >>>         If that means I would modify something in this area and do some
> >>>         expand?but how?
> >>>         Still puzzled about that.
> >>>
> >>>         Wish you can give me more hint to modify and implement the
> >>>         feature. :-)
> >>>
> >>>         I attach a patch.
> >>>         The Patch is what I have done,It did not contain XMLOFF
> >>>         module,outline view and vertical mode.
> >>>         I have implemented that. only have the non-edit mode problem.
> >>>
> >>>            > HTH!
> >>>            >
> >>>            >> I wish you can help me to solve this problem. Thank you.
> >>>            >>
> >>>            >> With Best Regards,
> >>>            >> LiuTao
> >>>            >>
> >>>            >>
> >>>            >> 2009/12/4 JiaXiang Liu <liujiaxi...@gmail.com
> >>>         <mailto:liujiaxi...@gmail.com>
> >>>            <mailto:liujiaxi...@gmail.com <mailto:liujiaxi...@gmail.com
> >>
> >>>            >> <mailto:liujiaxi...@gmail.com
> >>>         <mailto:liujiaxi...@gmail.com> <mailto:liujiaxi...@gmail.com
> >>  >         <mailto:liujiaxi...@gmail.com>>>>
> >>>            >>
> >>>            >> Hello Malte,
> >>>            >>
> >>>            >> Thank you very much for the information.
> >>>            >>
> >>>            >> It is too late today fo me.
> >>>            >>
> >>>            >> I will test in Monday morning. if it is not ok, I will
> also
> >>>            >> ask Armin for this.
> >>>            >>
> >>>            >> Have a nice weekend.
> >>>            >>
> >>>            >> With Best Regards,
> >>>            >>
> >>>            >> LiuTao
> >>>            >>
> >>>            >> 2009/12/4 Malte Timmermann <malte.timmerm...@sun.com
> >>>         <mailto:malte.timmerm...@sun.com>
> >>>            <mailto:malte.timmerm...@sun.com
> >>>         <mailto:malte.timmerm...@sun.com>>
> >>>            >> <mailto:malte.timmerm...@sun.com
> >>>         <mailto:malte.timmerm...@sun.com>
> >>>            <mailto:malte.timmerm...@sun.com
> >>>         <mailto:malte.timmerm...@sun.com>>>>
> >>>            >>
> >>>            >> Hi LiuTao,
> >>>            >>
> >>>            >>
> >>>            >> JiaXiang Liu wrote, On 12/04/09 10:30:
> >>>            >> > Hello Malte,
> >>>            >> >
> >>>            >> > Thank you for your answer.
> >>>            >> >
> >>>            >> > What I puzzled now is:
> >>>            >> >
> >>>            >> > Why I can not set the new attribute in no edit mode?
> >>>            >>
> >>>            >> For redrawing the content, the metrics calculated from
> the
> >>>            >> EditEngine
> >>>            >> are cached somewhere, and the drawing layer uses
> >>>            >> DrawText() directly,
> >>>            >> probably also with ALIGN_BASELINE.
> >>>            >>
> >>>            >> >
> >>>            >> > This is the* biggest problem* now and I want to solve
> >>>            >> it. Can you help
> >>>            >> > me?you said it may be the drawing layer.but I can not
> do
> >>>            >> anything about
> >>>            >> > that.
> >>>            >>
> >>>            >> Armin should know more about this...
> >>>            >>
> >>>            >> You might figure out by setting a break point in
> >> outliner.cxx
> >>>            >> aDrawPortionHdl.Call(...). Then you will at least be able
> >>>            >> to see how the
> >>>            >> information is collected. You need to record the
> >>>            >> information about the
> >>>            >> currently used alignment, and also use that information
> at
> >>>            >> the place
> >>>            >> where the drawtext() is done.
> >>>            >>
> >>>            >> >
> >>>            >> > Do you know Are there somebody in OpenOffice team is
> >>>            >> developing or will
> >>>            >> > develop this feature?
> >>>            >>
> >>>            >> Don't know / think so.
> >>>            >>
> >>>            >> Malte.
> >>>            >>
> >>>            >>
> >>>
> >>>
> >>  ---------------------------------------------------------------------
> >>>            >> To unsubscribe, e-mail:
> dev-unsubscr...@gsl.openoffice.org
> >>>         <mailto:dev-unsubscr...@gsl.openoffice.org>
> >>>            <mailto:dev-unsubscr...@gsl.openoffice.org
> >>>         <mailto:dev-unsubscr...@gsl.openoffice.org>>
> >>>            >> <mailto:dev-unsubscr...@gsl.openoffice.org
> >>>         <mailto:dev-unsubscr...@gsl.openoffice.org>
> >>>            <mailto:dev-unsubscr...@gsl.openoffice.org
> >>>         <mailto:dev-unsubscr...@gsl.openoffice.org>>>
> >>>            >> For additional commands, e-mail:
> >>>            >> dev-h...@gsl.openoffice.org
> >>>         <mailto:dev-h...@gsl.openoffice.org>
> >>>         <mailto:dev-h...@gsl.openoffice.org
> >>>         <mailto:dev-h...@gsl.openoffice.org>>
> >>>            >> <mailto:dev-h...@gsl.openoffice.org
> >>>         <mailto:dev-h...@gsl.openoffice.org>
> >>>            <mailto:dev-h...@gsl.openoffice.org
> >>>         <mailto:dev-h...@gsl.openoffice.org>>>
> >>>            >>
> >>>            >>
> >>>            >>
> >>>            >>
> >>>            >
> >>>
> >>>         With Best Regards,
> >>>
> >>>         LiuTao
> >>>
> >>>
> >>>
> >>>
> >>>     --
> >>>     Sitz der Gesellschaft: Sun Microsystems GmbH, Sonnenallee 1,
> >>>     D-85551 Kirchheim-Heimstetten|Amtsgericht München: HRB 161028
> >>>     Geschäftsführer: Thomas Schröder, Wolfgang Engels, Wolf Frenkel
> >>>     Vorsitzender des Aufsichtsrates: Martin Häring
> >>>
> >>>     Regards, Armin Le Grand (AW)|Don't ask what OOo can do for You,
> >>>     Armin.Le.Grand(at)sun.com <http://sun.com/>   |better ask what You
> >>>     can do for ooO!
> >>>
> >>>
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@gsl.openoffice.org
>  For additional commands, e-mail: dev-h...@gsl.openoffice.org
>
>

Reply via email to