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.

>
> 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?why do not use
ALIGN_TOP/BOTTOM?,the calculation is set in VCL.
I think it should be called by some functions.

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!
> >
> >
>

Reply via email to