You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by al...@apache.org on 2014/03/19 11:15:07 UTC
svn commit: r1579184 [24/33] - in /openoffice/branches/alg_writerframes: ./
ext_sources/ extras/l10n/source/de/ extras/l10n/source/es/
extras/l10n/source/eu/ extras/l10n/source/hi/ extras/l10n/source/kk/
extras/l10n/source/lt/ extras/l10n/source/nb/ ex...
Modified: openoffice/branches/alg_writerframes/main/svx/source/dialog/contdlg.src
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/dialog/contdlg.src?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/dialog/contdlg.src (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/dialog/contdlg.src Wed Mar 19 10:14:42 2014
@@ -183,9 +183,8 @@ FloatingWindow RID_SVXDLG_CONTOUR
Maximum = 99 ;
Last = 99 ;
SpinSize = 1 ;
- Unit = FUNIT_CUSTOM ;
+ Unit = FUNIT_PERCENT ;
QuickHelpText [ en-US ] = "Color Tolerance" ;
- CustomUnitText [ en-US ] = "%" ;
};
Control CTL_CONTOUR
{
Modified: openoffice/branches/alg_writerframes/main/svx/source/dialog/docrecovery.src
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/dialog/docrecovery.src?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/dialog/docrecovery.src (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/dialog/docrecovery.src Wed Mar 19 10:14:42 2014
@@ -152,7 +152,7 @@ TabPage RID_SVXPAGE_DOCRECOVERY_RECOVER
Pos = MAP_APPFONT( RECOV_COL1, RECOV_ROW2 );
Size = MAP_APPFONT( RECOV_CONTROLWIDTH, RECOV_DESCRHEIGHT );
WordBreak = TRUE;
- Text[ en-US ] = "Press 'Start Recovery' to start the recovery process of the documents listed below.\n\nThe 'Status' column shows whether the document could be recovered.";
+ Text[ en-US ] = "Press 'Start Recovery' to start the recovery process of the documents listed below.\n\nThe 'Status' column shows whether the document can be recovered.";
};
FixedText FT_RECOV_PROGR
{
Modified: openoffice/branches/alg_writerframes/main/svx/source/dialog/fontwork.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/dialog/fontwork.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/dialog/fontwork.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/dialog/fontwork.cxx Wed Mar 19 10:14:42 2014
@@ -600,7 +600,7 @@ void SvxFontWorkDialog::SetShadow_Impl(c
aMtrFldShadowX.SetSpinSize(10);
// aFbShadowY.SetBitmap( Bitmap( ResId( RID_SVXBMP_SHADOW_SIZE, _pMgr ) ) );
- aMtrFldShadowY.SetUnit(FUNIT_CUSTOM);
+ aMtrFldShadowY.SetUnit(FUNIT_PERCENT);
aMtrFldShadowY.SetDecimalDigits(0);
aMtrFldShadowY.SetMin(-999);
aMtrFldShadowY.SetMax( 999);
Modified: openoffice/branches/alg_writerframes/main/svx/source/dialog/fontwork.src
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/dialog/fontwork.src?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/dialog/fontwork.src (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/dialog/fontwork.src Wed Mar 19 10:14:42 2014
@@ -293,7 +293,6 @@ DockingWindow RID_SVXDLG_FONTWORK
Last = 5000000 ;
SpinSize = 50 ;
QuickHelpText [ en-US ] = "Distance Y" ;
- CustomUnitText [ en-US ] = "%" ;
};
ListBox CLB_SHADOW_COLOR
{
Modified: openoffice/branches/alg_writerframes/main/svx/source/dialog/hyprdlg.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/dialog/hyprdlg.hxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/dialog/hyprdlg.hxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/dialog/hyprdlg.hxx Wed Mar 19 10:14:42 2014
@@ -93,7 +93,6 @@ private:
PopupMenu aLinkPopup;
PopupMenu *pTargetMenu;
sal_Bool bNoDoc;
- sal_Bool bSend;
sal_Bool bHasOldName;
long nMaxWidth;
long nMinWidth;
Modified: openoffice/branches/alg_writerframes/main/svx/source/dialog/hyprlink.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/dialog/hyprlink.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/dialog/hyprlink.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/dialog/hyprlink.cxx Wed Mar 19 10:14:42 2014
@@ -114,7 +114,6 @@ SvxHyperlinkDlg::SvxHyperlinkDlg( SfxBin
pTargetMenu ( NULL ),
bNoDoc ( sal_True ),
- bSend ( sal_False ),
bHasOldName ( sal_False ),
bHtmlMode ( sal_False )
@@ -344,8 +343,7 @@ IMPL_LINK( SvxHyperlinkDlg, TBClickHdl,
{
case BTN_LINK:
{
- if (!bSend) // Link ins Dokument einfuegen
- SendToApp(HLINK_DEFAULT);
+ SendToApp(HLINK_DEFAULT);
}
break;
@@ -650,12 +648,23 @@ void SvxHyperlinkDlg::EnableLink()
void SvxHyperlinkDlg::SendToApp(sal_uInt16 nType)
{
+ static bool bAlreadyWorking(false);
+
+ if(bAlreadyWorking)
+ {
+ OSL_ENSURE(false, "SvxHyperlinkDlg::SendToApp called to potentially run recursively, please check (!)");
+ return;
+ }
+
+ bAlreadyWorking = true;
sal_Bool bIsFile = sal_False;
- bSend = sal_True;
String sURL( aUrlCB.GetText() );
if ( !sURL.Len() )
- return;
+ {
+ bAlreadyWorking = false;
+ return;
+ }
String aBase = GetBindings().GetDispatcher()->GetFrame()->GetObjectShell()->GetMedium()->GetBaseURL();
INetURLObject aObj( URIHelper::SmartRel2Abs( INetURLObject(aBase), sURL, URIHelper::GetMaybeFileHdl(), true, false,
@@ -674,7 +683,10 @@ void SvxHyperlinkDlg::SendToApp(sal_uInt
LeaveWait();
QueryBox aBox( this, SVX_RES( RID_SVXQB_DONTEXIST ) );
if ( aBox.Execute() == RET_NO )
+ {
+ bAlreadyWorking = false;
return;
+ }
}
else
LeaveWait();
@@ -700,6 +712,8 @@ void SvxHyperlinkDlg::SendToApp(sal_uInt
if ( sURL != aUrlCB.GetText() )
aUrlCB.SetText( sURL );
+
+ bAlreadyWorking = false;
}
/*--------------------------------------------------------------------
Modified: openoffice/branches/alg_writerframes/main/svx/source/dialog/relfld.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/dialog/relfld.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/dialog/relfld.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/dialog/relfld.cxx Wed Mar 19 10:14:42 2014
@@ -123,8 +123,7 @@ void SvxRelativeField::SetRelative( sal_
SetDecimalDigits( 0 );
SetMin( nRelMin );
SetMax( nRelMax );
- SetCustomUnitText( String( sal_Unicode( '%' ) ) );
- SetUnit( FUNIT_CUSTOM );
+ SetUnit( FUNIT_PERCENT );
}
else
{
Modified: openoffice/branches/alg_writerframes/main/svx/source/engine3d/float3d.src
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/engine3d/float3d.src?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/engine3d/float3d.src (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/engine3d/float3d.src Wed Mar 19 10:14:42 2014
@@ -250,8 +250,7 @@ DockingWindow RID_SVXFLOAT_3D
SpinSize = 5 ;
Maximum = 100 ;
Last = 100 ;
- Unit = FUNIT_CUSTOM ;
- CustomUnitText = " %" ;
+ Unit = FUNIT_PERCENT ;
};
FixedText FT_BACKSCALE
{
@@ -271,8 +270,7 @@ DockingWindow RID_SVXFLOAT_3D
Spin = TRUE ;
SpinSize = 5 ;
Maximum = 10000 ;
- Unit = FUNIT_CUSTOM ;
- CustomUnitText = " %" ;
+ Unit = FUNIT_PERCENT ;
Last = 10000 ;
};
FixedText FT_END_ANGLE
@@ -1168,8 +1166,7 @@ DockingWindow RID_SVXFLOAT_3D
TabStop = TRUE ;
Repeat = TRUE ;
Spin = TRUE ;
- Unit = FUNIT_CUSTOM ;
- CustomUnitText = " %" ;
+ Unit = FUNIT_PERCENT ;
Minimum = 1 ;
First = 1 ;
Maximum = 100 ;
Modified: openoffice/branches/alg_writerframes/main/svx/source/engine3d/scene3d.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/engine3d/scene3d.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/engine3d/scene3d.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/engine3d/scene3d.cxx Wed Mar 19 10:14:42 2014
@@ -53,6 +53,7 @@
#include <drawinglayer/geometry/viewinformation3d.hxx>
#include <basegfx/polygon/b2dpolypolygontools.hxx>
#include <svx/e3dsceneupdater.hxx>
+#include <svx/svdmodel.hxx>
#define ITEMVALUE(ItemSet,Id,Cast) ((const Cast&)(ItemSet).Get(Id)).GetValue()
@@ -455,7 +456,14 @@ void E3dScene::NewObjectInserted(const E
void E3dScene::StructureChanged()
{
E3dObject::StructureChanged();
- SetRectsDirty();
+
+ if(!GetModel() || !GetModel()->isLocked())
+ {
+ // #123539# optimization for 3D chart object generation: do not reset
+ // already calculated scene projection data every time an object gets
+ // initialized
+ SetRectsDirty();
+ }
// #110988#
ImpCleanup3DDepthMapper();
Modified: openoffice/branches/alg_writerframes/main/svx/source/gallery2/galtheme.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/gallery2/galtheme.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/gallery2/galtheme.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/gallery2/galtheme.cxx Wed Mar 19 10:14:42 2014
@@ -935,6 +935,11 @@ sal_Bool GalleryTheme::InsertGraphic( co
{
case( GFX_LINK_TYPE_EPS_BUFFER ): nExportFormat = CVT_SVM; break;
case( GFX_LINK_TYPE_NATIVE_GIF ): nExportFormat = CVT_GIF; break;
+
+ // #15508# added BMP type
+ // could not find/trigger a call to this, but should do no harm
+ case( GFX_LINK_TYPE_NATIVE_BMP ): nExportFormat = CVT_BMP; break;
+
case( GFX_LINK_TYPE_NATIVE_JPG ): nExportFormat = CVT_JPG; break;
case( GFX_LINK_TYPE_NATIVE_PNG ): nExportFormat = CVT_PNG; break;
case( GFX_LINK_TYPE_NATIVE_TIF ): nExportFormat = CVT_TIF; break;
Modified: openoffice/branches/alg_writerframes/main/svx/source/items/algitem.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/items/algitem.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/items/algitem.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/items/algitem.cxx Wed Mar 19 10:14:42 2014
@@ -600,18 +600,22 @@ SfxItemPresentation SvxMarginItem::GetPr
{
rText = SVX_RESSTR(RID_SVXITEMS_MARGIN_LEFT);
rText += GetMetricText( (long)nLeftMargin, eCoreUnit, ePresUnit, pIntl );
+ rText += sal_Unicode(' ');
rText += SVX_RESSTR(GetMetricId(ePresUnit));
rText += cpDelim;
rText += SVX_RESSTR(RID_SVXITEMS_MARGIN_TOP);
rText += GetMetricText( (long)nTopMargin, eCoreUnit, ePresUnit, pIntl );
+ rText += sal_Unicode(' ');
rText += SVX_RESSTR(GetMetricId(ePresUnit));
rText += cpDelim;
rText += SVX_RESSTR(RID_SVXITEMS_MARGIN_RIGHT);
rText += GetMetricText( (long)nRightMargin, eCoreUnit, ePresUnit, pIntl );
+ rText += sal_Unicode(' ');
rText += SVX_RESSTR(GetMetricId(ePresUnit));
rText += cpDelim;
rText += SVX_RESSTR(RID_SVXITEMS_MARGIN_BOTTOM);
rText += GetMetricText( (long)nBottomMargin, eCoreUnit, ePresUnit, pIntl );
+ rText += sal_Unicode(' ');
rText += SVX_RESSTR(GetMetricId(ePresUnit));
return SFX_ITEM_PRESENTATION_COMPLETE;
}
Modified: openoffice/branches/alg_writerframes/main/svx/source/items/svxitems.src
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/items/svxitems.src?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/items/svxitems.src (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/items/svxitems.src Wed Mar 19 10:14:42 2014
@@ -197,15 +197,15 @@ String RID_SVXITEMS_BRUSHSTYLE_DOWNDIAG
};
String RID_SVXITEMS_BRUSHSTYLE_25
{
- Text = "25%" ;
+ Text = "25 %" ;
};
String RID_SVXITEMS_BRUSHSTYLE_50
{
- Text = "50%" ;
+ Text = "50 %" ;
};
String RID_SVXITEMS_BRUSHSTYLE_75
{
- Text = "75%" ;
+ Text = "75 %" ;
};
String RID_SVXITEMS_BRUSHSTYLE_BITMAP
{
Modified: openoffice/branches/alg_writerframes/main/svx/source/sdr/contact/viewcontactofgraphic.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/sdr/contact/viewcontactofgraphic.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/sdr/contact/viewcontactofgraphic.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/sdr/contact/viewcontactofgraphic.cxx Wed Mar 19 10:14:42 2014
@@ -93,8 +93,7 @@ namespace sdr
drawinglayer::primitive2d::Primitive2DSequence ViewContactOfGraphic::createVIP2DSForPresObj(
const basegfx::B2DHomMatrix& rObjectMatrix,
- const drawinglayer::attribute::SdrLineFillShadowTextAttribute& rAttribute,
- const GraphicAttr& rLocalGrafInfo) const
+ const drawinglayer::attribute::SdrLineFillShadowTextAttribute& rAttribute) const
{
drawinglayer::primitive2d::Primitive2DSequence xRetval;
GraphicObject aEmptyGraphicObject;
@@ -143,11 +142,12 @@ namespace sdr
* aSmallerMatrix;
const GraphicObject& rGraphicObject = GetGrafObject().GetGraphicObject(false);
+ const GraphicAttr aLocalGrafInfo;
const drawinglayer::primitive2d::Primitive2DReference xReferenceB(new drawinglayer::primitive2d::SdrGrafPrimitive2D(
- aSmallerMatrix,
- drawinglayer::attribute::SdrLineFillShadowTextAttribute(),
- rGraphicObject,
- rLocalGrafInfo));
+ aSmallerMatrix,
+ drawinglayer::attribute::SdrLineFillShadowTextAttribute(),
+ rGraphicObject,
+ aLocalGrafInfo));
drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(xRetval, xReferenceB);
}
@@ -379,7 +379,7 @@ namespace sdr
{
// it's an EmptyPresObj, create the SdrGrafPrimitive2D without content and another scaled one
// with the content which is the placeholder graphic
- xRetval = createVIP2DSForPresObj(aObjectMatrix, aAttribute, aLocalGrafInfo);
+ xRetval = createVIP2DSForPresObj(aObjectMatrix, aAttribute);
}
else if(visualisationUsesDraft())
{
@@ -392,16 +392,16 @@ namespace sdr
}
else
{
- // create primitive. Info: Calling the copy-constructor of GraphicObject in this
- // SdrGrafPrimitive2D constructor will force a full swap-in of the graphic
- const drawinglayer::primitive2d::Primitive2DReference xReference(
+ // create primitive. Info: Calling the copy-constructor of GraphicObject in this
+ // SdrGrafPrimitive2D constructor will force a full swap-in of the graphic
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
new drawinglayer::primitive2d::SdrGrafPrimitive2D(
aObjectMatrix,
aAttribute,
rGraphicObject,
aLocalGrafInfo));
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
+ xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
}
// always append an invisible outline for the cases where no visible content exists
Modified: openoffice/branches/alg_writerframes/main/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx Wed Mar 19 10:14:42 2014
@@ -58,7 +58,8 @@ namespace sdr
}
ViewContactOfSdrOle2Obj::ViewContactOfSdrOle2Obj(SdrOle2Obj& rOle2Obj)
- : ViewContactOfSdrRectObj(rOle2Obj)
+ : ViewContactOfSdrRectObj(rOle2Obj),
+ mxChartContent()
{
}
@@ -104,30 +105,45 @@ namespace sdr
if(GetOle2Obj().IsChart())
{
- // try to get chart primitives and chart range directly from xChartModel
- basegfx::B2DRange aChartContentRange;
- const drawinglayer::primitive2d::Primitive2DSequence aChartSequence(
- ChartHelper::tryToGetChartContentAsPrimitive2DSequence(
- GetOle2Obj().getXModel(),
- aChartContentRange));
- const double fWidth(aChartContentRange.getWidth());
- const double fHeight(aChartContentRange.getHeight());
-
- if(aChartSequence.hasElements()
- && basegfx::fTools::more(fWidth, 0.0)
- && basegfx::fTools::more(fHeight, 0.0))
+ // #123539# allow buffering and reuse of local chart data to not need to rebuild it
+ // on every ViewObjectContact::getPrimitive2DSequence call. TTTT: No tneeded for
+ // aw080, there this mechanism alraedy works differently
+ if(mxChartContent.is())
{
- // create embedding transformation
- basegfx::B2DHomMatrix aEmbed(
- basegfx::tools::createTranslateB2DHomMatrix(
- -aChartContentRange.getMinX(),
- -aChartContentRange.getMinY()));
-
- aEmbed.scale(1.0 / fWidth, 1.0 / fHeight);
- aEmbed = aObjectMatrix * aEmbed;
- xContent = new drawinglayer::primitive2d::TransformPrimitive2D(
- aEmbed,
- aChartSequence);
+ xContent = mxChartContent;
+ }
+ else
+ {
+ // try to get chart primitives and chart range directly from xChartModel
+ basegfx::B2DRange aChartContentRange;
+ const drawinglayer::primitive2d::Primitive2DSequence aChartSequence(
+ ChartHelper::tryToGetChartContentAsPrimitive2DSequence(
+ GetOle2Obj().getXModel(),
+ aChartContentRange));
+ const double fWidth(aChartContentRange.getWidth());
+ const double fHeight(aChartContentRange.getHeight());
+
+ if(aChartSequence.hasElements()
+ && basegfx::fTools::more(fWidth, 0.0)
+ && basegfx::fTools::more(fHeight, 0.0))
+ {
+ // create embedding transformation
+ basegfx::B2DHomMatrix aEmbed(
+ basegfx::tools::createTranslateB2DHomMatrix(
+ -aChartContentRange.getMinX(),
+ -aChartContentRange.getMinY()));
+
+ aEmbed.scale(1.0 / fWidth, 1.0 / fHeight);
+ aEmbed = aObjectMatrix * aEmbed;
+ xContent = new drawinglayer::primitive2d::TransformPrimitive2D(
+ aEmbed,
+ aChartSequence);
+ }
+
+ if(xContent.is())
+ {
+ const_cast< ViewContactOfSdrOle2Obj* >(this)->mxChartContent = xContent;
+ }
}
}
@@ -160,6 +176,18 @@ namespace sdr
return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
}
+ void ViewContactOfSdrOle2Obj::ActionChanged()
+ {
+ // call parent
+ ViewContactOfSdrRectObj::ActionChanged();
+
+ // #123539# if we have buffered chart data, reset it
+ if(mxChartContent.is())
+ {
+ mxChartContent.clear();
+ }
+ }
+
drawinglayer::primitive2d::Primitive2DSequence ViewContactOfSdrOle2Obj::createViewIndependentPrimitive2DSequence() const
{
// do as if no HC and call standard creator
Modified: openoffice/branches/alg_writerframes/main/svx/source/sdr/overlay/overlayanimatedbitmapex.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/sdr/overlay/overlayanimatedbitmapex.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/sdr/overlay/overlayanimatedbitmapex.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/sdr/overlay/overlayanimatedbitmapex.cxx Wed Mar 19 10:14:42 2014
@@ -45,7 +45,9 @@ namespace sdr
getBitmapEx1(),
getBasePosition(),
getCenterX1(),
- getCenterY1()));
+ getCenterY1(),
+ getShearX(),
+ getRotation()));
return drawinglayer::primitive2d::Primitive2DSequence(&aPrimitive, 1);
}
@@ -56,35 +58,41 @@ namespace sdr
getBitmapEx2(),
getBasePosition(),
getCenterX2(),
- getCenterY2()));
+ getCenterY2(),
+ getShearX(),
+ getRotation()));
return drawinglayer::primitive2d::Primitive2DSequence(&aPrimitive, 1);
}
}
- OverlayAnimatedBitmapEx::OverlayAnimatedBitmapEx(
- const basegfx::B2DPoint& rBasePos,
- const BitmapEx& rBitmapEx1,
- const BitmapEx& rBitmapEx2,
- sal_uInt32 nBlinkTime,
- sal_uInt16 nCenX1,
- sal_uInt16 nCenY1,
- sal_uInt16 nCenX2,
- sal_uInt16 nCenY2)
- : OverlayObjectWithBasePosition(rBasePos, Color(COL_WHITE)),
- maBitmapEx1(rBitmapEx1),
- maBitmapEx2(rBitmapEx2),
- mnCenterX1(nCenX1), mnCenterY1(nCenY1),
- mnCenterX2(nCenX2), mnCenterY2(nCenY2),
- mnBlinkTime(nBlinkTime),
- mbOverlayState(false)
+ OverlayAnimatedBitmapEx::OverlayAnimatedBitmapEx(
+ const basegfx::B2DPoint& rBasePos,
+ const BitmapEx& rBitmapEx1,
+ const BitmapEx& rBitmapEx2,
+ sal_uInt32 nBlinkTime,
+ sal_uInt16 nCenX1,
+ sal_uInt16 nCenY1,
+ sal_uInt16 nCenX2,
+ sal_uInt16 nCenY2,
+ double fShearX,
+ double fRotation)
+ : OverlayObjectWithBasePosition(rBasePos, Color(COL_WHITE)),
+ maBitmapEx1(rBitmapEx1),
+ maBitmapEx2(rBitmapEx2),
+ mnCenterX1(nCenX1), mnCenterY1(nCenY1),
+ mnCenterX2(nCenX2), mnCenterY2(nCenY2),
+ mnBlinkTime(nBlinkTime),
+ mfShearX(fShearX),
+ mfRotation(fRotation),
+ mbOverlayState(false)
{
- // set AllowsAnimation flag to mark this object as animation capable
- mbAllowsAnimation = true;
+ // set AllowsAnimation flag to mark this object as animation capable
+ mbAllowsAnimation = true;
- // #i53216# check blink time value range
- mnBlinkTime = impCheckBlinkTimeValueRange(mnBlinkTime);
- }
+ // #i53216# check blink time value range
+ mnBlinkTime = impCheckBlinkTimeValueRange(mnBlinkTime);
+ }
OverlayAnimatedBitmapEx::~OverlayAnimatedBitmapEx()
{
Modified: openoffice/branches/alg_writerframes/main/svx/source/sdr/overlay/overlaybitmapex.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/sdr/overlay/overlaybitmapex.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/sdr/overlay/overlaybitmapex.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/sdr/overlay/overlaybitmapex.cxx Wed Mar 19 10:14:42 2014
@@ -43,7 +43,9 @@ namespace sdr
getBitmapEx(),
getBasePosition(),
getCenterX(),
- getCenterY()));
+ getCenterY(),
+ getShearX(),
+ getRotation()));
if(basegfx::fTools::more(mfAlpha, 0.0))
{
@@ -55,17 +57,23 @@ namespace sdr
return drawinglayer::primitive2d::Primitive2DSequence(&aReference, 1);
}
- OverlayBitmapEx::OverlayBitmapEx(
- const basegfx::B2DPoint& rBasePos,
- const BitmapEx& rBitmapEx,
- sal_uInt16 nCenX, sal_uInt16 nCenY, double fAlpha)
- : OverlayObjectWithBasePosition(rBasePos, Color(COL_WHITE)),
- maBitmapEx(rBitmapEx),
- mnCenterX(nCenX),
- mnCenterY(nCenY),
- mfAlpha(fAlpha)
- {
- }
+ OverlayBitmapEx::OverlayBitmapEx(
+ const basegfx::B2DPoint& rBasePos,
+ const BitmapEx& rBitmapEx,
+ sal_uInt16 nCenX,
+ sal_uInt16 nCenY,
+ double fAlpha,
+ double fShearX,
+ double fRotation)
+ : OverlayObjectWithBasePosition(rBasePos, Color(COL_WHITE)),
+ maBitmapEx(rBitmapEx),
+ mnCenterX(nCenX),
+ mnCenterY(nCenY),
+ mfAlpha(fAlpha),
+ mfShearX(fShearX),
+ mfRotation(fRotation)
+ {
+ }
OverlayBitmapEx::~OverlayBitmapEx()
{
Modified: openoffice/branches/alg_writerframes/main/svx/source/sdr/overlay/overlaytools.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/sdr/overlay/overlaytools.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/sdr/overlay/overlaytools.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/sdr/overlay/overlaytools.cxx Wed Mar 19 10:14:42 2014
@@ -47,12 +47,16 @@ namespace drawinglayer
const BitmapEx& rBitmapEx,
const basegfx::B2DPoint& rBasePosition,
sal_uInt16 nCenterX,
- sal_uInt16 nCenterY)
+ sal_uInt16 nCenterY,
+ double fShearX,
+ double fRotation)
: DiscreteMetricDependentPrimitive2D(),
maBitmapEx(rBitmapEx),
maBasePosition(rBasePosition),
mnCenterX(nCenterX),
- mnCenterY(nCenterY)
+ mnCenterY(nCenterY),
+ mfShearX(fShearX),
+ mfRotation(fRotation)
{}
Primitive2DSequence OverlayBitmapExPrimitive::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
@@ -67,18 +71,33 @@ namespace drawinglayer
// the prepared one which expresses how many logic units form a discrete unit)
// for this step. This primitive is to be displayed always unscaled (in it's pixel size)
// and unrotated, more like a marker
- const double fLeft(((0.0 - getCenterX()) * getDiscreteUnit()) + getBasePosition().getX());
- const double fTop(((0.0 - getCenterY()) * getDiscreteUnit()) + getBasePosition().getY());
- const double fRight(((aBitmapSize.getWidth() - getCenterX()) * getDiscreteUnit()) + getBasePosition().getX());
- const double fBottom(((aBitmapSize.getHeight() - getCenterY()) * getDiscreteUnit()) + getBasePosition().getY());
+ const double fLeft((0.0 - getCenterX()) * getDiscreteUnit());
+ const double fTop((0.0 - getCenterY()) * getDiscreteUnit());
+ const double fRight((aBitmapSize.getWidth() - getCenterX()) * getDiscreteUnit());
+ const double fBottom((aBitmapSize.getHeight() - getCenterY()) * getDiscreteUnit());
// create a BitmapPrimitive2D using those positions
- basegfx::B2DHomMatrix aTransform;
+ basegfx::B2DHomMatrix aTransform;
+
+ aTransform.set(0, 0, fRight - fLeft);
+ aTransform.set(1, 1, fBottom - fTop);
+ aTransform.set(0, 2, fLeft);
+ aTransform.set(1, 2, fTop);
+
+ // if shearX is used, apply it, too
+ if(!basegfx::fTools::equalZero(getShearX()))
+ {
+ aTransform.shearX(getShearX());
+ }
+
+ // if rotation is used, apply it, too
+ if(!basegfx::fTools::equalZero(getRotation()))
+ {
+ aTransform.rotate(getRotation());
+ }
- aTransform.set(0, 0, fRight - fLeft);
- aTransform.set(1, 1, fBottom - fTop);
- aTransform.set(0, 2, fLeft);
- aTransform.set(1, 2, fTop);
+ // add BasePosition
+ aTransform.translate(getBasePosition().getX(), getBasePosition().getY());
const Primitive2DReference aPrimitive(new BitmapPrimitive2D(getBitmapEx(), aTransform));
aRetval = Primitive2DSequence(&aPrimitive, 1);
@@ -96,7 +115,9 @@ namespace drawinglayer
return (getBitmapEx() == rCompare.getBitmapEx()
&& getBasePosition() == rCompare.getBasePosition()
&& getCenterX() == rCompare.getCenterX()
- && getCenterY() == rCompare.getCenterY());
+ && getCenterY() == rCompare.getCenterY()
+ && getShearX() == rCompare.getShearX()
+ && getRotation() == rCompare.getRotation());
}
return false;
Modified: openoffice/branches/alg_writerframes/main/svx/source/sdr/primitive2d/sdrattributecreator.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/sdr/primitive2d/sdrattributecreator.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/sdr/primitive2d/sdrattributecreator.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/sdr/primitive2d/sdrattributecreator.cxx Wed Mar 19 10:14:42 2014
@@ -647,26 +647,31 @@ namespace drawinglayer
// convert size and MapMode to destination logical size and MapMode
const MapUnit aDestinationMapUnit((MapUnit)rSet.GetPool()->GetMetric(0));
+ basegfx::B2DVector aGraphicLogicSize(aGraphic.GetPrefSize().Width(), aGraphic.GetPrefSize().Height());
if(aGraphic.GetPrefMapMode() != aDestinationMapUnit)
{
// #i100360# for MAP_PIXEL, LogicToLogic will not work properly,
// so fallback to Application::GetDefaultDevice()
+ Size aNewSize(0, 0);
+
if(MAP_PIXEL == aGraphic.GetPrefMapMode().GetMapUnit())
{
- aGraphic.SetPrefSize(
- Application::GetDefaultDevice()->PixelToLogic(
- aGraphic.GetPrefSize(),
- aDestinationMapUnit));
+ aNewSize = Application::GetDefaultDevice()->PixelToLogic(
+ aGraphic.GetPrefSize(),
+ aDestinationMapUnit);
}
else
{
- aGraphic.SetPrefSize(
- OutputDevice::LogicToLogic(
- aGraphic.GetPrefSize(),
- aGraphic.GetPrefMapMode(),
- aDestinationMapUnit));
+ aNewSize = OutputDevice::LogicToLogic(
+ aGraphic.GetPrefSize(),
+ aGraphic.GetPrefMapMode(),
+ aDestinationMapUnit);
}
+
+ // #124002# do not set new size using SetPrefSize at the graphic, this will lead to problems.
+ // Instead, adapt the GraphicLogicSize which will be used for further decompositions
+ aGraphicLogicSize = basegfx::B2DVector(aNewSize.Width(), aNewSize.Height());
}
// get size
@@ -682,6 +687,7 @@ namespace drawinglayer
return attribute::SdrFillGraphicAttribute(
aGraphic,
+ aGraphicLogicSize,
aSize,
aOffset,
aOffsetPosition,
Modified: openoffice/branches/alg_writerframes/main/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx Wed Mar 19 10:14:42 2014
@@ -281,10 +281,13 @@ namespace drawinglayer
aTextAnchorRange.expand(aTopLeft);
aTextAnchorRange.expand(aBottomRight);
- // now create a transformation from this basic range (aTextAnchorRange)
- aAnchorTransform = basegfx::tools::createScaleTranslateB2DHomMatrix(
- aTextAnchorRange.getWidth(), aTextAnchorRange.getHeight(),
- aTextAnchorRange.getMinX(), aTextAnchorRange.getMinY());
+ // now create a transformation from this basic range (aTextAnchorRange)
+ // #121494# if we have no scale use at least 1.0 to have a carrier e.g. for
+ // mirror values, else these will get lost
+ aAnchorTransform = basegfx::tools::createScaleTranslateB2DHomMatrix(
+ basegfx::fTools::equalZero(aTextAnchorRange.getWidth()) ? 1.0 : aTextAnchorRange.getWidth(),
+ basegfx::fTools::equalZero(aTextAnchorRange.getHeight()) ? 1.0 : aTextAnchorRange.getHeight(),
+ aTextAnchorRange.getMinX(), aTextAnchorRange.getMinY());
// apply mirroring
aAnchorTransform.scale(bMirrorX ? -1.0 : 1.0, bMirrorY ? -1.0 : 1.0);
Modified: openoffice/branches/alg_writerframes/main/svx/source/sidebar/area/AreaPropertyPanel.src
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/sidebar/area/AreaPropertyPanel.src?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/sidebar/area/AreaPropertyPanel.src (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/sidebar/area/AreaPropertyPanel.src Wed Mar 19 10:14:42 2014
@@ -144,7 +144,7 @@ Control RID_SIDEBAR_AREA_PANEL
Border = TRUE ;
Pos = MAP_APPFONT ( SECTIONPAGE_MARGIN_HORIZONTAL , SECTIONPAGE_MARGIN_VERTICAL_TOP + 2*(FIXED_TEXT_HEIGHT + TEXT_CONTROL_SPACING_VERTICAL) + CBOX_HEIGHT + CONTROL_SPACING_VERTICAL ) ;
Size = MAP_APPFONT ( MBOX_WIDTH , LISTBOX_HEIGHT ) ;
- QuickHelpText [ en-US ] = "Select the type of transparence to apply." ;
+ QuickHelpText [ en-US ] = "Select the type of transparency to apply." ;
TabStop = TRUE ;
DropDown = TRUE ;
HelpID = HID_PPROPERTYPANEL_AREA_LB_TRGR_TYPES ;
@@ -167,14 +167,13 @@ Control RID_SIDEBAR_AREA_PANEL
Pos = MAP_APPFONT ( SECTIONPAGE_MARGIN_HORIZONTAL + MBOX_WIDTH + CONTROL_SPACING_HORIZONTAL , SECTIONPAGE_MARGIN_VERTICAL_TOP + 2*(FIXED_TEXT_HEIGHT + TEXT_CONTROL_SPACING_VERTICAL) + CBOX_HEIGHT + CONTROL_SPACING_VERTICAL ) ;
Size = MAP_APPFONT ( MBOX_WIDTH + 1 ,MBOX_HEIGHT ) ;
HelpID = HID_PPROPERTYPANEL_AREA_MTR_TRANSPARENT ;
- QuickHelpText [ en-US ] = "Specify 0% for fully opaque through 100% for fully transparent." ;
+ QuickHelpText [ en-US ] = "Specify 0 % for fully opaque through 100 % for fully transparent." ;
TabStop = TRUE ;
Repeat = TRUE ;
Spin = TRUE ;
Maximum = 100 ;
StrictFormat = TRUE ;
- Unit = FUNIT_CUSTOM ;
- CustomUnitText = "%" ;
+ Unit = FUNIT_PERCENT ;
Last = 100 ;
SpinSize = 5 ;
};
@@ -226,14 +225,13 @@ Control RID_POPUPPANEL_AREAPAGE_TRGR
Border = TRUE ;
Size = MAP_APPFONT ( CONTROL_WIDTH , MBOX_HEIGHT ) ;
HelpID = HID_PPROPERTYPANEL_AREA_MTR_TRGR_CENTER_X ;
- QuickHelpText [ en-US ] = "Specify the horizontal offset percentage from the center for the gradient shading style. 50% is the horizontal center." ;
+ QuickHelpText [ en-US ] = "Specify the horizontal offset percentage from the center for the gradient shading style. 50 % is the horizontal center." ;
TabStop = TRUE ;
Repeat = TRUE ;
Spin = TRUE ;
Maximum = 100 ;
StrictFormat = TRUE ;
- Unit = FUNIT_CUSTOM ;
- CustomUnitText = "%" ;
+ Unit = FUNIT_PERCENT ;
Last = 100 ;
SpinSize = 5 ;
};
@@ -247,14 +245,13 @@ Control RID_POPUPPANEL_AREAPAGE_TRGR
Border = TRUE ;
Size = MAP_APPFONT ( CONTROL_WIDTH , MBOX_HEIGHT ) ;
HelpID = HID_PPROPERTYPANEL_AREA_MTR_TRGR_CENTER_Y ;
- QuickHelpText [ en-US ] = "Specify the vertical offset percentage from the center for the gradient shading style. 50% is the vertical center." ;
+ QuickHelpText [ en-US ] = "Specify the vertical offset percentage from the center for the gradient shading style. 50 % is the vertical center." ;
TabStop = TRUE ;
Repeat = TRUE ;
Spin = TRUE ;
Maximum = 100 ;
StrictFormat = TRUE ;
- Unit = FUNIT_CUSTOM ;
- CustomUnitText = "%" ;
+ Unit = FUNIT_PERCENT ;
Last = 100 ;
SpinSize = 5 ;
};
@@ -288,14 +285,13 @@ Control RID_POPUPPANEL_AREAPAGE_TRGR
Border = TRUE ;
Size = MAP_APPFONT ( CONTROL_WIDTH , MBOX_HEIGHT ) ;
HelpID = HID_PPROPERTYPANEL_AREA_MTR_TRGR_SVALUE ;
- QuickHelpText [ en-US ] = "Enter a transparency value for the beginning point of the gradient, where 0% is fully opaque and 100% is fully transparent." ;
+ QuickHelpText [ en-US ] = "Enter a transparency value for the beginning point of the gradient, where 0 % is fully opaque and 100 % is fully transparent." ;
TabStop = TRUE ;
Repeat = TRUE ;
Spin = TRUE ;
Maximum = 100 ;
StrictFormat = TRUE ;
- Unit = FUNIT_CUSTOM ;
- CustomUnitText = "%" ;
+ Unit = FUNIT_PERCENT ;
Last = 100 ;
SpinSize = 5 ;
};
@@ -309,14 +305,13 @@ Control RID_POPUPPANEL_AREAPAGE_TRGR
Border = TRUE ;
Size = MAP_APPFONT ( CONTROL_WIDTH , MBOX_HEIGHT ) ;
HelpID = HID_PPROPERTYPANEL_AREA_MTR_TRGR_EVALUE ;
- QuickHelpText [ en-US ] = "Enter a transparency value for the endpoint of the gradient, where 0% is fully opaque and 100% is fully transparent." ;
+ QuickHelpText [ en-US ] = "Enter a transparency value for the endpoint of the gradient, where 0 % is fully opaque and 100 % is fully transparent." ;
TabStop = TRUE ;
Repeat = TRUE ;
Spin = TRUE ;
Maximum = 100 ;
StrictFormat = TRUE ;
- Unit = FUNIT_CUSTOM ;
- CustomUnitText = "%" ;
+ Unit = FUNIT_PERCENT ;
Last = 100 ;
SpinSize = 5 ;
};
@@ -330,14 +325,13 @@ Control RID_POPUPPANEL_AREAPAGE_TRGR
Border = TRUE ;
Size = MAP_APPFONT ( CONTROL_WIDTH , MBOX_HEIGHT ) ;
HelpID = HID_PPROPERTYPANEL_AREA_MTR_TRGR_BORDER ;
- QuickHelpText [ en-US ] = "Specify the border value of gradient transparence." ;
+ QuickHelpText [ en-US ] = "Specify the border value of gradient transparency." ;
TabStop = TRUE ;
Repeat = TRUE ;
Spin = TRUE ;
Maximum = 100 ;
StrictFormat = TRUE ;
- Unit = FUNIT_CUSTOM ;
- CustomUnitText = "%" ;
+ Unit = FUNIT_PERCENT ;
Last = 100 ;
SpinSize = 5 ;
};
Modified: openoffice/branches/alg_writerframes/main/svx/source/sidebar/graphic/GraphicPropertyPanel.src
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/sidebar/graphic/GraphicPropertyPanel.src?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/sidebar/graphic/GraphicPropertyPanel.src (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/sidebar/graphic/GraphicPropertyPanel.src Wed Mar 19 10:14:42 2014
@@ -69,8 +69,7 @@ Control RID_SIDEBAR_GRAPHIC_PANEL
Maximum = 100 ;
Minimum = -100 ;
StrictFormat = TRUE ;
- Unit = FUNIT_CUSTOM ;
- CustomUnitText = "%" ;
+ Unit = FUNIT_PERCENT ;
SpinSize = 1 ;
};
FixedText FT_CONTRAST
@@ -92,8 +91,7 @@ Control RID_SIDEBAR_GRAPHIC_PANEL
Maximum = 100 ;
Minimum = -100 ;
StrictFormat = TRUE ;
- Unit = FUNIT_CUSTOM ;
- CustomUnitText = "%" ;
+ Unit = FUNIT_PERCENT ;
SpinSize = 1 ;
};
FixedText FT_COLOR_MODE
@@ -124,14 +122,13 @@ Control RID_SIDEBAR_GRAPHIC_PANEL
Pos = MAP_APPFONT (X2, Y3) ;
Size = MAP_APPFONT ( MBOX_WIDTH ,MBOX_HEIGHT ) ;
HelpID = HID_PROPERTY_PANEL_GRAPHIC_MTR_TRANSP;
- QuickHelpText [ en-US ] = "Specify the percentage of transparency; 0% is fully opaque and 100% is fully transparent.";
+ QuickHelpText [ en-US ] = "Specify the percentage of transparency; 0 % is fully opaque and 100 % is fully transparent.";
TabStop = TRUE ;
Repeat = TRUE ;
Spin = TRUE ;
Maximum = 100 ;
StrictFormat = TRUE ;
- Unit = FUNIT_CUSTOM ;
- CustomUnitText = "%" ;
+ Unit = FUNIT_PERCENT ;
SpinSize = 1 ;
};
MetricField MF_RED
@@ -147,8 +144,7 @@ Control RID_SIDEBAR_GRAPHIC_PANEL
Maximum = 100 ;
Minimum = -100 ;
StrictFormat = TRUE ;
- Unit = FUNIT_CUSTOM ;
- CustomUnitText = "%" ;
+ Unit = FUNIT_PERCENT ;
SpinSize = 1 ;
};
MetricField MF_GREEN
@@ -164,8 +160,7 @@ Control RID_SIDEBAR_GRAPHIC_PANEL
Maximum = 100 ;
Minimum = -100 ;
StrictFormat = TRUE ;
- Unit = FUNIT_CUSTOM ;
- CustomUnitText = "%" ;
+ Unit = FUNIT_PERCENT ;
SpinSize = 1 ;
};
MetricField MF_BLUE
@@ -181,8 +176,7 @@ Control RID_SIDEBAR_GRAPHIC_PANEL
Maximum = 100 ;
Minimum = -100 ;
StrictFormat = TRUE ;
- Unit = FUNIT_CUSTOM ;
- CustomUnitText = "%" ;
+ Unit = FUNIT_PERCENT ;
SpinSize = 1 ;
};
MetricField MF_GAMMA
Modified: openoffice/branches/alg_writerframes/main/svx/source/sidebar/line/LinePropertyPanel.src
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/sidebar/line/LinePropertyPanel.src?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/sidebar/line/LinePropertyPanel.src (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/sidebar/line/LinePropertyPanel.src Wed Mar 19 10:14:42 2014
@@ -131,8 +131,7 @@ Control RID_SIDEBAR_LINE_PANEL
Spin = TRUE ;
Maximum = 100 ;
StrictFormat = TRUE ;
- Unit = FUNIT_CUSTOM ;
- CustomUnitText = "%" ;
+ Unit = FUNIT_PERCENT ;
Last = 100 ;
SpinSize = 5 ;
QuickHelpText [ en-US ] = "Specify the transparency of the line.";
Modified: openoffice/branches/alg_writerframes/main/svx/source/sidebar/paragraph/ParaPropertyPanel.src
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/sidebar/paragraph/ParaPropertyPanel.src?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/sidebar/paragraph/ParaPropertyPanel.src (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/sidebar/paragraph/ParaPropertyPanel.src Wed Mar 19 10:14:42 2014
@@ -661,8 +661,7 @@ Control RID_POPUPPANEL_PARAPAGE_LINESPAC
Maximum = 200;
Value = 100;
StrictFormat = TRUE;
- Unit = FUNIT_CUSTOM ;
- CustomUnitText = "%";
+ Unit = FUNIT_PERCENT ;
First = 50;
Last = 200;
SpinSize = 1;
Modified: openoffice/branches/alg_writerframes/main/svx/source/sidebar/possize/PosSizePropertyPanel.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/sidebar/possize/PosSizePropertyPanel.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/sidebar/possize/PosSizePropertyPanel.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/sidebar/possize/PosSizePropertyPanel.cxx Wed Mar 19 10:14:42 2014
@@ -699,9 +699,11 @@ IMPL_LINK( PosSizePropertyPanel, AngleMo
}
sal_Int64 nTmp = dTmp*100;
+ // #123993# Need to take UIScale into account when executing rotations
+ const double fUIScale(mpView && mpView->GetModel() ? double(mpView->GetModel()->GetUIScale()) : 1.0);
SfxInt32Item aAngleItem( SID_ATTR_TRANSFORM_ANGLE,(sal_uInt32) nTmp);
- SfxInt32Item aRotXItem( SID_ATTR_TRANSFORM_ROT_X,(sal_uInt32) mlRotX);
- SfxInt32Item aRotYItem( SID_ATTR_TRANSFORM_ROT_Y,(sal_uInt32) mlRotY);
+ SfxInt32Item aRotXItem( SID_ATTR_TRANSFORM_ROT_X, basegfx::fround(mlRotX * fUIScale));
+ SfxInt32Item aRotYItem( SID_ATTR_TRANSFORM_ROT_Y, basegfx::fround(mlRotY * fUIScale));
GetBindings()->GetDispatcher()->Execute(
SID_ATTR_TRANSFORM, SFX_CALLMODE_RECORD, &aAngleItem, &aRotXItem, &aRotYItem, 0L );
@@ -715,9 +717,11 @@ IMPL_LINK( PosSizePropertyPanel, Rotatio
{
sal_Int32 nTmp = mpDial->GetRotation();
+ // #123993# Need to take UIScale into account when executing rotations
+ const double fUIScale(mpView && mpView->GetModel() ? double(mpView->GetModel()->GetUIScale()) : 1.0);
SfxInt32Item aAngleItem( SID_ATTR_TRANSFORM_ANGLE,(sal_uInt32) nTmp);
- SfxInt32Item aRotXItem( SID_ATTR_TRANSFORM_ROT_X,(sal_uInt32) mlRotX);
- SfxInt32Item aRotYItem( SID_ATTR_TRANSFORM_ROT_Y,(sal_uInt32) mlRotY);
+ SfxInt32Item aRotXItem( SID_ATTR_TRANSFORM_ROT_X, basegfx::fround(mlRotX * fUIScale));
+ SfxInt32Item aRotYItem( SID_ATTR_TRANSFORM_ROT_Y, basegfx::fround(mlRotY * fUIScale));
GetBindings()->GetDispatcher()->Execute(
SID_ATTR_TRANSFORM, SFX_CALLMODE_RECORD, &aAngleItem, &aRotXItem, &aRotYItem, 0L );
@@ -992,6 +996,7 @@ void PosSizePropertyPanel::NotifyItemUpd
case SID_ATTR_METRIC:
MetricState( eState, pState );
+ UpdateUIScale();
break;
default:
@@ -1346,6 +1351,28 @@ void PosSizePropertyPanel::DisableContro
}
+
+
+void PosSizePropertyPanel::UpdateUIScale (void)
+{
+ const Fraction aUIScale (mpView->GetModel()->GetUIScale());
+ if (maUIScale != aUIScale)
+ {
+ // UI scale has changed.
+
+ // Remember the new UI scale.
+ maUIScale = aUIScale;
+
+ // The content of the position and size boxes is only updated when item changes are notified.
+ // Request such notifications without changing the actual item values.
+ GetBindings()->Invalidate(SID_ATTR_TRANSFORM_POS_X, sal_True, sal_False);
+ GetBindings()->Invalidate(SID_ATTR_TRANSFORM_POS_Y, sal_True, sal_False);
+ GetBindings()->Invalidate(SID_ATTR_TRANSFORM_WIDTH, sal_True, sal_False);
+ GetBindings()->Invalidate(SID_ATTR_TRANSFORM_HEIGHT, sal_True, sal_False);
+ }
+}
+
+
} } // end of namespace svx::sidebar
// eof
Modified: openoffice/branches/alg_writerframes/main/svx/source/sidebar/possize/PosSizePropertyPanel.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/sidebar/possize/PosSizePropertyPanel.hxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/sidebar/possize/PosSizePropertyPanel.hxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/sidebar/possize/PosSizePropertyPanel.hxx Wed Mar 19 10:14:42 2014
@@ -184,6 +184,18 @@ private:
void DisableControls();
void AdaptWidthHeightScalePosition(bool bOriginal);
void AdaptAngleFlipDialPosition(bool bOriginal);
+
+ /** Check if the UI scale has changed and handle such a change.
+ UI scale is an SD only feature. The UI scale is represented by items
+ ATTR_OPTIONS_SCALE_X and
+ ATTR_OPTIONS_SCALE_Y.
+ As we have no direct access (there is no dependency of svx on sd) we have to
+ use a small trick (aka hack):
+ a) call this method whenever a change of the metric item is notified,
+ b) check if the UI scale has changed (strangely, the UI scale value is available at the SdrModel.
+ c) invalidate the items for position and size to trigger notifications of their current values.
+ */
+ void UpdateUIScale (void);
};
Modified: openoffice/branches/alg_writerframes/main/svx/source/sidebar/text/TextCharacterSpacingControl.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/sidebar/text/TextCharacterSpacingControl.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/sidebar/text/TextCharacterSpacingControl.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/sidebar/text/TextCharacterSpacingControl.cxx Wed Mar 19 10:14:42 2014
@@ -185,6 +185,7 @@ void TextCharacterSpacingControl::Rearra
{
String aStrTip( maStrCusE); //LAST CUSTOM no tip defect //add
aStrTip.Append( String::CreateFromDouble( (double)mnCustomKern / 10));
+ aStrTip.Append( xub_Unicode(' ') );
aStrTip.Append(maStrUnit); // modify
maVSSpacing.SetItemText(6,aStrTip);
}
@@ -192,6 +193,7 @@ void TextCharacterSpacingControl::Rearra
{
String aStrTip(maStrCusC) ; //LAST CUSTOM no tip defect //add
aStrTip.Append( String::CreateFromDouble( (double)-mnCustomKern / 10));
+ aStrTip.Append( xub_Unicode( ' ' ) );
aStrTip.Append(maStrUnit); // modify
maVSSpacing.SetItemText( 6, aStrTip );
}
Modified: openoffice/branches/alg_writerframes/main/svx/source/sidebar/text/TextPropertyPanel.src
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/sidebar/text/TextPropertyPanel.src?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/sidebar/text/TextPropertyPanel.src (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/sidebar/text/TextPropertyPanel.src Wed Mar 19 10:14:42 2014
@@ -623,11 +623,11 @@ Control RID_POPUPPANEL_TEXTPAGE_SPACING
String STR_VERY_TIGHT_TIP
{
- Text [ en-US ] = " Spacing: Condensed By: 3pt";
+ Text [ en-US ] = " Spacing: Condensed By: 3 pt";
};
String STR_TIGHT_TIP
{
- Text [ en-US ] = " Spacing: Condensed By: 1.5pt";
+ Text [ en-US ] = " Spacing: Condensed By: 1.5 pt";
};
String STR_NORMAL_TIP
{
@@ -635,11 +635,11 @@ Control RID_POPUPPANEL_TEXTPAGE_SPACING
};
String STR_LOOSE_TIP
{
- Text [ en-US ] = " Spacing: Expanded By: 3pt";
+ Text [ en-US ] = " Spacing: Expanded By: 3 pt";
};
String STR_VERY_LOOSE_TIP
{
- Text [ en-US ] = " Spacing: Expanded By: 6pt";
+ Text [ en-US ] = " Spacing: Expanded By: 6 pt";
};
String STR_CUSTOM_C_TIP
{
Modified: openoffice/branches/alg_writerframes/main/svx/source/stbctrls/stbctrls.src
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/stbctrls/stbctrls.src?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/stbctrls/stbctrls.src (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/stbctrls/stbctrls.src Wed Mar 19 10:14:42 2014
@@ -93,31 +93,31 @@ Menu RID_SVXMNU_ZOOM
{
Identifier = ZOOM_200 ;
HelpId = HID_MNU_ZOOM_200 ;
- Text = "200%" ;
+ Text = "200 %" ;
};
MenuItem
{
Identifier = ZOOM_150 ;
HelpId = HID_MNU_ZOOM_150 ;
- Text = "150%" ;
+ Text = "150 %" ;
};
MenuItem
{
Identifier = ZOOM_100 ;
HelpId = HID_MNU_ZOOM_100 ;
- Text = "100%" ;
+ Text = "100 %" ;
};
MenuItem
{
Identifier = ZOOM_75 ;
HelpId = HID_MNU_ZOOM_75 ;
- Text = "75%" ;
+ Text = "75 %" ;
};
MenuItem
{
Identifier = ZOOM_50 ;
HelpId = HID_MNU_ZOOM_50 ;
- Text = "50%" ;
+ Text = "50 %" ;
};
MenuItem
{
Modified: openoffice/branches/alg_writerframes/main/svx/source/stbctrls/zoomctrl.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/stbctrls/zoomctrl.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/stbctrls/zoomctrl.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/stbctrls/zoomctrl.cxx Wed Mar 19 10:14:42 2014
@@ -132,7 +132,7 @@ void SvxZoomStatusBarControl::StateChang
const SfxUInt16Item* pItem = (const SfxUInt16Item*)pState;
nZoom = pItem->GetValue();
String aStr( String::CreateFromInt32(nZoom) );
- aStr += '%';
+ aStr.AppendAscii( " %" );
GetStatusBar().SetItemText( GetId(), aStr );
if ( pState->ISA(SvxZoomItem) )
@@ -168,7 +168,7 @@ void SvxZoomStatusBarControl::StateChang
void SvxZoomStatusBarControl::Paint( const UserDrawEvent& )
{
String aStr( String::CreateFromInt32( nZoom ));
- aStr += '%';
+ aStr.AppendAscii( " %" );
GetStatusBar().SetItemText( GetId(), aStr );
}
@@ -212,7 +212,7 @@ void SvxZoomStatusBarControl::Command( c
sal_uIntPtr SvxZoomStatusBarControl::GetDefItemWidth(const StatusBar& rStb)
{
- long nWidth1 = rStb.GetTextWidth(String::CreateFromAscii("XXXXX%"));
+ long nWidth1 = rStb.GetTextWidth(String::CreateFromAscii("XXXXX %"));
return nWidth1;
}
Modified: openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdattr.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdattr.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdattr.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdattr.cxx Wed Mar 19 10:14:42 2014
@@ -1011,6 +1011,7 @@ SfxItemPresentation __EXPORT SdrMetricIt
aFmt.TakeStr(nValue,rText);
String aStr;
aFmt.TakeUnitStr((MapUnit)ePresMetric,aStr);
+ rText += sal_Unicode(' ');
rText+=aStr;
if (ePres==SFX_ITEM_PRESENTATION_COMPLETE) {
String aStr2;
Modified: openoffice/branches/alg_writerframes/main/svx/source/svdraw/svddrgm1.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/svdraw/svddrgm1.hxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/svdraw/svddrgm1.hxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/svdraw/svddrgm1.hxx Wed Mar 19 10:14:42 2014
@@ -256,15 +256,18 @@ public:
////////////////////////////////////////////////////////////////////////////////////////////////////
// SdrDragCrop
-class SdrDragCrop : public SdrDragResize
+// derive from SdrDragObjOwn to have handles aligned to object when it
+// is sheared or rotated
+class SdrDragCrop : public SdrDragObjOwn
{
public:
- TYPEINFO();
- SdrDragCrop(SdrDragView& rNewView);
+ TYPEINFO();
+ SdrDragCrop(SdrDragView& rNewView);
- virtual void TakeSdrDragComment(String& rStr) const;
- virtual bool EndSdrDrag(bool bCopy);
- virtual Pointer GetSdrDragPointer() const;
+ virtual void TakeSdrDragComment(String& rStr) const;
+ virtual bool BeginSdrDrag();
+ virtual bool EndSdrDrag(bool bCopy);
+ virtual Pointer GetSdrDragPointer() const;
};
////////////////////////////////////////////////////////////////////////////////////////////////////
Modified: openoffice/branches/alg_writerframes/main/svx/source/svdraw/svddrgmt.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/svdraw/svddrgmt.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/svdraw/svddrgmt.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/svdraw/svddrgmt.cxx Wed Mar 19 10:14:42 2014
@@ -3681,7 +3681,7 @@ void SdrDragDistort::applyCurrentTransfo
TYPEINIT1(SdrDragCrop,SdrDragResize);
SdrDragCrop::SdrDragCrop(SdrDragView& rNewView)
-: SdrDragResize(rNewView)
+: SdrDragObjOwn(rNewView)
{
// switch off solid dragging for crop; it just makes no sense since showing
// a 50% transparent object above the original will not be visible
@@ -3706,7 +3706,21 @@ void SdrDragCrop::TakeSdrDragComment(Xub
rStr += ImpGetResStr(STR_EditWithCopy);
}
-bool SdrDragCrop::EndSdrDrag(bool bCopy)
+bool SdrDragCrop::BeginSdrDrag()
+{
+ // call parent
+ bool bRetval(SdrDragObjOwn::BeginSdrDrag());
+
+ if(!GetDragHdl())
+ {
+ // we need the DragHdl, break if not there
+ bRetval = false;
+ }
+
+ return bRetval;
+}
+
+bool SdrDragCrop::EndSdrDrag(bool /*bCopy*/)
{
Hide();
@@ -3745,34 +3759,204 @@ bool SdrDragCrop::EndSdrDrag(bool bCopy)
ImpTakeDescriptionStr(STR_DragMethCrop, aUndoStr);
getSdrDragView().BegUndo( aUndoStr );
- getSdrDragView().AddUndo( getSdrDragView().GetModel()->GetSdrUndoFactory().CreateUndoGeoObject( *pObj ) );
+ getSdrDragView().AddUndo( getSdrDragView().GetModel()->GetSdrUndoFactory().CreateUndoGeoObject(*pObj));
+ // also need attr undo, the SdrGrafCropItem will be changed
+ getSdrDragView().AddUndo( getSdrDragView().GetModel()->GetSdrUndoFactory().CreateUndoAttrObject(*pObj));
}
- Rectangle aOldRect( pObj->GetLogicRect() );
- getSdrDragView().ResizeMarkedObj(DragStat().Ref1(),aXFact,aYFact,bCopy);
- Rectangle aNewRect( pObj->GetLogicRect() );
+ // new part to comute the user's drag activities
+ // get the original objects transformation
+ basegfx::B2DHomMatrix aOriginalMatrix;
+ basegfx::B2DPolyPolygon aPolyPolygon;
+ bool bShearCorrected(false);
+
+ // get transformation from object
+ pObj->TRGetBaseGeometry(aOriginalMatrix, aPolyPolygon);
+
+ { // TTTT correct shear, it comes currently mirrored from TRGetBaseGeometry, can be removed with aw080
+ basegfx::B2DTuple aScale;
+ basegfx::B2DTuple aTranslate;
+ double fRotate(0.0), fShearX(0.0);
+
+ aOriginalMatrix.decompose(aScale, aTranslate, fRotate, fShearX);
+
+ if(!basegfx::fTools::equalZero(fShearX))
+ {
+ bShearCorrected = true;
+ aOriginalMatrix = basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
+ aScale,
+ -fShearX,
+ fRotate,
+ aTranslate);
+ }
+ }
+
+ // invert it to be able to work on unit coordinates
+ basegfx::B2DHomMatrix aInverse(aOriginalMatrix);
+
+ aInverse.invert();
+
+ // gererate start point of original drag vector in unit coordinates (the
+ // vis-a-vis of the drag point)
+ basegfx::B2DPoint aLocalStart(0.0, 0.0);
+ bool bOnAxis(false);
+
+ switch(GetDragHdlKind())
+ {
+ case HDL_UPLFT: aLocalStart.setX(1.0); aLocalStart.setY(1.0); break;
+ case HDL_UPPER: aLocalStart.setX(0.5); aLocalStart.setY(1.0); bOnAxis = true; break;
+ case HDL_UPRGT: aLocalStart.setX(0.0); aLocalStart.setY(1.0); break;
+ case HDL_LEFT : aLocalStart.setX(1.0); aLocalStart.setY(0.5); bOnAxis = true; break;
+ case HDL_RIGHT: aLocalStart.setX(0.0); aLocalStart.setY(0.5); bOnAxis = true; break;
+ case HDL_LWLFT: aLocalStart.setX(1.0); aLocalStart.setY(0.0); break;
+ case HDL_LOWER: aLocalStart.setX(0.5); aLocalStart.setY(0.0); bOnAxis = true; break;
+ case HDL_LWRGT: aLocalStart.setX(0.0); aLocalStart.setY(0.0); break;
+ default: break;
+ }
+
+ // create the current drag position in unit coordinates
+ basegfx::B2DPoint aLocalCurrent(aInverse * basegfx::B2DPoint(DragStat().GetNow().X(), DragStat().GetNow().Y()));
+
+ // if one of the edge handles is used, limit to X or Y drag only
+ if(bOnAxis)
+ {
+ if(basegfx::fTools::equal(aLocalStart.getX(), 0.5))
+ {
+ aLocalCurrent.setX(aLocalStart.getX());
+ }
+ else
+ {
+ aLocalCurrent.setY(aLocalStart.getY());
+ }
+ }
+
+ // create internal change in unit coordinates
+ basegfx::B2DHomMatrix aDiscreteChangeMatrix;
+
+ if(!basegfx::fTools::equal(aLocalCurrent.getX(), aLocalStart.getX()))
+ {
+ if(aLocalStart.getX() < 0.5)
+ {
+ aDiscreteChangeMatrix.scale(aLocalCurrent.getX(), 1.0);
+ }
+ else
+ {
+ aDiscreteChangeMatrix.scale(1.0 - aLocalCurrent.getX(), 1.0);
+ aDiscreteChangeMatrix.translate(aLocalCurrent.getX(), 0.0);
+ }
+ }
+
+ if(!basegfx::fTools::equal(aLocalCurrent.getY(), aLocalStart.getY()))
+ {
+ if(aLocalStart.getY() < 0.5)
+ {
+ aDiscreteChangeMatrix.scale(1.0, aLocalCurrent.getY());
+ }
+ else
+ {
+ aDiscreteChangeMatrix.scale(1.0, 1.0 - aLocalCurrent.getY());
+ aDiscreteChangeMatrix.translate(0.0, aLocalCurrent.getY());
+ }
+ }
+
+ // preparematrix to apply to object; evtl. back-correct shear
+ basegfx::B2DHomMatrix aNewObjectMatrix(aOriginalMatrix * aDiscreteChangeMatrix);
+ if(bShearCorrected)
+ {
+ // TTTT back-correct shear
+ basegfx::B2DTuple aScale;
+ basegfx::B2DTuple aTranslate;
+ double fRotate(0.0), fShearX(0.0);
+
+ aNewObjectMatrix.decompose(aScale, aTranslate, fRotate, fShearX);
+ aNewObjectMatrix = basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
+ aScale,
+ -fShearX,
+ fRotate,
+ aTranslate);
+ }
+
+ // apply change to object by applying the unit coordinate change followed
+ // by the original change
+ pObj->TRSetBaseGeometry(aNewObjectMatrix, aPolyPolygon);
+
+ // the following old code uses aOldRect/aNewRect to calculate the crop change for
+ // the crop item. It implies unrotated objects, so create the unrotated original
+ // erctangle and the unrotated modified rectangle. Latter can in case of shear and/or
+ // rotation not be fetched by using
+ //
+ //Rectangle aNewRect( pObj->GetLogicRect() );
+ //
+ // as it was done before because the top-left of that new rect *will* have an offset
+ // caused by the evtl. existing shear and/or rotation, so calculate a unrotated
+ // rectangle how it would be as a result when appling the unit coordinate change
+ // to the unrotated original transformation.
+ basegfx::B2DTuple aScale;
+ basegfx::B2DTuple aTranslate;
+ double fRotate, fShearX;
+
+ // get access to scale and translate
+ aOriginalMatrix.decompose(aScale, aTranslate, fRotate, fShearX);
+
+ // prepare unsheared/unrotated versions of the old and new transformation
+ const basegfx::B2DHomMatrix aMatrixOriginalNoShearNoRotate(
+ basegfx::tools::createScaleTranslateB2DHomMatrix(
+ basegfx::absolute(aScale),
+ aTranslate));
+
+ // create the ranges for these
+ basegfx::B2DRange aRangeOriginalNoShearNoRotate(0.0, 0.0, 1.0, 1.0);
+ basegfx::B2DRange aRangeNewNoShearNoRotate(0.0, 0.0, 1.0, 1.0);
+
+ aRangeOriginalNoShearNoRotate.transform(aMatrixOriginalNoShearNoRotate);
+ aRangeNewNoShearNoRotate.transform(aMatrixOriginalNoShearNoRotate * aDiscreteChangeMatrix);
+
+ // extract the old Rectangle structures
+ Rectangle aOldRect(
+ basegfx::fround(aRangeOriginalNoShearNoRotate.getMinX()),
+ basegfx::fround(aRangeOriginalNoShearNoRotate.getMinY()),
+ basegfx::fround(aRangeOriginalNoShearNoRotate.getMaxX()),
+ basegfx::fround(aRangeOriginalNoShearNoRotate.getMaxY()));
+ Rectangle aNewRect(
+ basegfx::fround(aRangeNewNoShearNoRotate.getMinX()),
+ basegfx::fround(aRangeNewNoShearNoRotate.getMinY()),
+ basegfx::fround(aRangeNewNoShearNoRotate.getMaxX()),
+ basegfx::fround(aRangeNewNoShearNoRotate.getMaxY()));
+
+ // continue with the old original stuff
double fScaleX = ( aGraphicSize.Width() - rOldCrop.GetLeft() - rOldCrop.GetRight() ) / (double)aOldRect.GetWidth();
double fScaleY = ( aGraphicSize.Height() - rOldCrop.GetTop() - rOldCrop.GetBottom() ) / (double)aOldRect.GetHeight();
- // to correct the never working combination of cropped images and mirroring
- // I have to correct the rectangles the calculation is based on here. In the current
- // core geometry stuff a vertical mirror is expressed as 180 degree rotation. All
- // this can be removed again when aw080 will have cleaned up the old
- // (non-)transformation mess in the core.
- if(18000 == pObj->GetGeoStat().nDrehWink)
- {
- // old notation of vertical mirror, need to correct diffs since both rects
- // are rotated by 180 degrees
- aOldRect = Rectangle(aOldRect.TopLeft() - (aOldRect.BottomRight() - aOldRect.TopLeft()), aOldRect.TopLeft());
- aNewRect = Rectangle(aNewRect.TopLeft() - (aNewRect.BottomRight() - aNewRect.TopLeft()), aNewRect.TopLeft());
- }
+ // not needed since the modification is done in unit coordinates, free from shear/rotate and mirror
+ // // TTTT may be removed or exhanged by other stuff in aw080
+ // // to correct the never working combination of cropped images and mirroring
+ // // I have to correct the rectangles the calculation is based on here. In the current
+ // // core geometry stuff a vertical mirror is expressed as 180 degree rotation. All
+ // // this can be removed again when aw080 will have cleaned up the old
+ // // (non-)transformation mess in the core.
+ // if(18000 == pObj->GetGeoStat().nDrehWink)
+ // {
+ // // old notation of vertical mirror, need to correct diffs since both rects
+ // // are rotated by 180 degrees
+ // aOldRect = Rectangle(aOldRect.TopLeft() - (aOldRect.BottomRight() - aOldRect.TopLeft()), aOldRect.TopLeft());
+ // aNewRect = Rectangle(aNewRect.TopLeft() - (aNewRect.BottomRight() - aNewRect.TopLeft()), aNewRect.TopLeft());
+ // }
sal_Int32 nDiffLeft = aNewRect.nLeft - aOldRect.nLeft;
sal_Int32 nDiffTop = aNewRect.nTop - aOldRect.nTop;
sal_Int32 nDiffRight = aNewRect.nRight - aOldRect.nRight;
sal_Int32 nDiffBottom = aNewRect.nBottom - aOldRect.nBottom;
+ if(pObj->IsMirrored())
+ {
+ // mirrored X or Y, for old stuff, exchange X
+ // TTTT: check for aw080
+ sal_Int32 nTmp(nDiffLeft);
+ nDiffLeft = -nDiffRight;
+ nDiffRight = -nTmp;
+ }
+
sal_Int32 nLeftCrop = static_cast<sal_Int32>( rOldCrop.GetLeft() + nDiffLeft * fScaleX );
sal_Int32 nTopCrop = static_cast<sal_Int32>( rOldCrop.GetTop() + nDiffTop * fScaleY );
sal_Int32 nRightCrop = static_cast<sal_Int32>( rOldCrop.GetRight() - nDiffRight * fScaleX );
Modified: openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdedtv.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdedtv.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdedtv.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdedtv.cxx Wed Mar 19 10:14:42 2014
@@ -39,6 +39,7 @@
#include "svx/svdstr.hrc" // Namen aus der Resource
#include "svx/svdglob.hxx" // StringCache
#include <svx/e3dsceneupdater.hxx>
+#include <svx/svdview.hxx>
// #i13033#
#include <clonelist.hxx>
@@ -1022,6 +1023,26 @@ sal_Bool SdrEditView::InsertObjectAtView
void SdrEditView::ReplaceObjectAtView(SdrObject* pOldObj, SdrPageView& rPV, SdrObject* pNewObj, sal_Bool bMark)
{
+ if(IsTextEdit())
+ {
+#ifdef DBG_UTIL
+ if(pOldObj && dynamic_cast< SdrTextObj* >(pOldObj) && static_cast< SdrTextObj* >(pOldObj)->IsTextEditActive())
+ {
+ OSL_ENSURE(false, "OldObject is in TextEdit mode, this has to be ended before replacing it usnig SdrEndTextEdit (!)");
+ }
+
+ if(pNewObj && dynamic_cast< SdrTextObj* >(pNewObj) && static_cast< SdrTextObj* >(pNewObj)->IsTextEditActive())
+ {
+ OSL_ENSURE(false, "NewObject is in TextEdit mode, this has to be ended before replacing it usnig SdrEndTextEdit (!)");
+ }
+#endif
+
+ // #123468# emergency repair situation, needs to cast up to a class derived from
+ // this one; (aw080 has a mechanism for that and the view hierarchy is secured to
+ // always be a SdrView)
+ if(dynamic_cast< SdrView* >(this)) static_cast< SdrView* >(this)->SdrEndTextEdit();
+ }
+
SdrObjList* pOL=pOldObj->GetObjList();
const bool bUndo = IsUndoEnabled();
if( bUndo )
Modified: openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdhdl.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdhdl.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdhdl.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdhdl.cxx Wed Mar 19 10:14:42 2014
@@ -2296,8 +2296,14 @@ SdrHdl* SdrHdlList::GetHdl(SdrHdlKind eK
// SdrCropHdl
// --------------------------------------------------------------------
-SdrCropHdl::SdrCropHdl(const Point& rPnt, SdrHdlKind eNewKind)
-: SdrHdl( rPnt, eNewKind )
+SdrCropHdl::SdrCropHdl(
+ const Point& rPnt,
+ SdrHdlKind eNewKind,
+ double fShearX,
+ double fRotation)
+: SdrHdl(rPnt, eNewKind),
+ mfShearX(fShearX),
+ mfRotation(fRotation)
{
}
@@ -2405,29 +2411,40 @@ void SdrCropHdl::CreateB2dIAObject()
::sdr::overlay::OverlayObject* pOverlayObject = 0L;
- // animate focused handles
- if(IsFocusHdl() && (pHdlList->GetFocusHdl() == this))
- {
- if( nHdlSize >= 2 )
- nHdlSize = 1;
-
- BitmapEx aBmpEx2( GetBitmapForHandle( aHandlesBitmap, nHdlSize + 1 ) );
-
- const sal_uInt32 nBlinkTime = sal::static_int_cast<sal_uInt32>(rStyleSettings.GetCursorBlinkTime());
-
- pOverlayObject = new ::sdr::overlay::OverlayAnimatedBitmapEx(aPosition, aBmpEx1, aBmpEx2, nBlinkTime,
- (sal_uInt16)(aBmpEx1.GetSizePixel().Width() - 1) >> 1,
- (sal_uInt16)(aBmpEx1.GetSizePixel().Height() - 1) >> 1,
- (sal_uInt16)(aBmpEx2.GetSizePixel().Width() - 1) >> 1,
- (sal_uInt16)(aBmpEx2.GetSizePixel().Height() - 1) >> 1);
- }
- else
- {
- // create centered handle as default
- pOverlayObject = new ::sdr::overlay::OverlayBitmapEx(aPosition, aBmpEx1,
- (sal_uInt16)(aBmpEx1.GetSizePixel().Width() - 1) >> 1,
- (sal_uInt16)(aBmpEx1.GetSizePixel().Height() - 1) >> 1);
- }
+ // animate focused handles
+ if(IsFocusHdl() && (pHdlList->GetFocusHdl() == this))
+ {
+ if( nHdlSize >= 2 )
+ nHdlSize = 1;
+
+ BitmapEx aBmpEx2( GetBitmapForHandle( aHandlesBitmap, nHdlSize + 1 ) );
+
+ const sal_uInt32 nBlinkTime = sal::static_int_cast<sal_uInt32>(rStyleSettings.GetCursorBlinkTime());
+
+ pOverlayObject = new ::sdr::overlay::OverlayAnimatedBitmapEx(
+ aPosition,
+ aBmpEx1,
+ aBmpEx2,
+ nBlinkTime,
+ (sal_uInt16)(aBmpEx1.GetSizePixel().Width() - 1) >> 1,
+ (sal_uInt16)(aBmpEx1.GetSizePixel().Height() - 1) >> 1,
+ (sal_uInt16)(aBmpEx2.GetSizePixel().Width() - 1) >> 1,
+ (sal_uInt16)(aBmpEx2.GetSizePixel().Height() - 1) >> 1,
+ mfShearX,
+ mfRotation);
+ }
+ else
+ {
+ // create centered handle as default
+ pOverlayObject = new ::sdr::overlay::OverlayBitmapEx(
+ aPosition,
+ aBmpEx1,
+ (sal_uInt16)(aBmpEx1.GetSizePixel().Width() - 1) >> 1,
+ (sal_uInt16)(aBmpEx1.GetSizePixel().Height() - 1) >> 1,
+ 0.0,
+ mfShearX,
+ mfRotation);
+ }
// OVERLAYMANAGER
if(pOverlayObject)
@@ -2442,6 +2459,8 @@ void SdrCropHdl::CreateB2dIAObject()
}
////////////////////////////////////////////////////////////////////////////////////////////////////
+// with the correction of crop handling I could get rid of the extra mirroring flag, adapted stuff
+// accordingly
SdrCropViewHdl::SdrCropViewHdl(
const basegfx::B2DHomMatrix& rObjectTransform,
@@ -2449,16 +2468,14 @@ SdrCropViewHdl::SdrCropViewHdl(
double fCropLeft,
double fCropTop,
double fCropRight,
- double fCropBottom,
- bool bExtraMirrorXFromGraphic)
+ double fCropBottom)
: SdrHdl(Point(), HDL_USER),
maObjectTransform(rObjectTransform),
maGraphic(rGraphic),
mfCropLeft(fCropLeft),
mfCropTop(fCropTop),
mfCropRight(fCropRight),
- mfCropBottom(fCropBottom),
- mbExtraMirrorXFromGraphic(bExtraMirrorXFromGraphic)
+ mfCropBottom(fCropBottom)
{
}
@@ -2510,15 +2527,11 @@ void SdrCropViewHdl::CreateB2dIAObject()
if(bMirroredX)
{
aScale.setX(-aScale.getX());
- fCropLeft = mfCropRight;
- fCropRight = mfCropLeft;
}
if(bMirroredY)
{
aScale.setY(-aScale.getY());
- fCropTop = mfCropBottom;
- fCropBottom = mfCropTop;
}
// create target translate and scale
@@ -2583,14 +2596,14 @@ void SdrCropViewHdl::CreateB2dIAObject()
// create cropped transformation
basegfx::B2DHomMatrix aCroppedTransform;
- const bool bCombinedMirrorX(mbExtraMirrorXFromGraphic || bMirroredX);
+ const bool bCombinedMirrorX(bMirroredX);
aCroppedTransform.scale(
- bCombinedMirrorX ? -aCropped.getWidth() : aCropped.getWidth(),
- bMirroredY ? -aCropped.getHeight() : aCropped.getHeight());
+ aCropped.getWidth(),
+ aCropped.getHeight());
aCroppedTransform.translate(
- bCombinedMirrorX ? aCropped.getMaxX() : aCropped.getMinX(),
- bMirroredY ? aCropped.getMaxY() : aCropped.getMinY());
+ aCropped.getMinX(),
+ aCropped.getMinY());
aCroppedTransform = maObjectTransform * aCroppedTransform;
// prepare graphic primitive (tranformed)
Modified: openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdmrkv.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdmrkv.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdmrkv.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdmrkv.cxx Wed Mar 19 10:14:42 2014
@@ -654,6 +654,13 @@ sal_Bool SdrMarkView::ImpIsFrameHandles(
bFrmHdl=!pObj->hasSpecialDrag();
}
}
+
+ // no FrameHdl for crop
+ if(bFrmHdl && SDRDRAG_CROP == eDragMode)
+ {
+ bFrmHdl = sal_False;
+ }
+
return bFrmHdl;
}
@@ -767,136 +774,92 @@ void SdrMarkView::SetMarkHandles()
pHdl->SetObjHdlNum(sal_uInt16(i-nSiz0));
}
}
- else if( eDragMode==SDRDRAG_CROP )
- {
- const SdrGrafObj* pSdrGrafObj = dynamic_cast< const SdrGrafObj* >(pMarkedObj);
-
- if(pSdrGrafObj)
+ else
+ {
+ sal_Bool bWdt0=aRect.Left()==aRect.Right();
+ sal_Bool bHgt0=aRect.Top()==aRect.Bottom();
+ if (bWdt0 && bHgt0)
{
- const SdrGrafCropItem& rCrop = static_cast< const SdrGrafCropItem& >(pSdrGrafObj->GetMergedItem(SDRATTR_GRAFCROP));
-
- if(rCrop.GetLeft() || rCrop.GetTop() || rCrop.GetRight() ||rCrop.GetBottom())
- {
- basegfx::B2DHomMatrix aMatrix;
- basegfx::B2DPolyPolygon aPolyPolygon;
-
- pSdrGrafObj->TRGetBaseGeometry(aMatrix, aPolyPolygon);
+ aHdl.AddHdl(new SdrHdl(aRect.TopLeft(),HDL_UPLFT));
+ }
+ else if (!bStdDrag && (bWdt0 || bHgt0))
+ {
+ aHdl.AddHdl(new SdrHdl(aRect.TopLeft() ,HDL_UPLFT));
+ aHdl.AddHdl(new SdrHdl(aRect.BottomRight(),HDL_LWRGT));
+ }
+ else
+ {
+ if (!bWdt0 && !bHgt0) aHdl.AddHdl(new SdrHdl(aRect.TopLeft() ,HDL_UPLFT));
+ if ( !bHgt0) aHdl.AddHdl(new SdrHdl(aRect.TopCenter() ,HDL_UPPER));
+ if (!bWdt0 && !bHgt0) aHdl.AddHdl(new SdrHdl(aRect.TopRight() ,HDL_UPRGT));
+ if (!bWdt0 ) aHdl.AddHdl(new SdrHdl(aRect.LeftCenter() ,HDL_LEFT ));
+ if (!bWdt0 ) aHdl.AddHdl(new SdrHdl(aRect.RightCenter() ,HDL_RIGHT));
+ if (!bWdt0 && !bHgt0) aHdl.AddHdl(new SdrHdl(aRect.BottomLeft() ,HDL_LWLFT));
+ if ( !bHgt0) aHdl.AddHdl(new SdrHdl(aRect.BottomCenter(),HDL_LOWER));
+ if (!bWdt0 && !bHgt0) aHdl.AddHdl(new SdrHdl(aRect.BottomRight() ,HDL_LWRGT));
+ }
+ }
+ }
+ }
+ else
+ {
+ bool bDone(false);
- // decompose to have current translate and scale
- basegfx::B2DVector aScale, aTranslate;
- double fRotate, fShearX;
+ // moved crop handling to non-frame part and the handle creation to SdrGrafObj
+ if(1 == nMarkAnz && pMarkedObj && SDRDRAG_CROP == eDragMode)
+ {
+ const SdrGrafObj* pSdrGrafObj = dynamic_cast< const SdrGrafObj* >(pMarkedObj);
- aMatrix.decompose(aScale, aTranslate, fRotate, fShearX);
+ if(pSdrGrafObj)
+ {
+ pSdrGrafObj->addCropHandles(aHdl);
+ bDone = true;
+ }
+ }
- if(!aScale.equalZero())
+ if(!bDone)
+ {
+ for (sal_uIntPtr nMarkNum=0; nMarkNum<nMarkAnz; nMarkNum++)
+ {
+ const SdrMark* pM=GetSdrMarkByIndex(nMarkNum);
+ SdrObject* pObj=pM->GetMarkedSdrObj();
+ SdrPageView* pPV=pM->GetPageView();
+ const sal_uIntPtr nSiz0=aHdl.GetHdlCount();
+ pObj->AddToHdlList(aHdl);
+ const sal_uIntPtr nSiz1=aHdl.GetHdlCount();
+ bool bPoly=pObj->IsPolyObj();
+ const SdrUShortCont* pMrkPnts=pM->GetMarkedPoints();
+ for (sal_uIntPtr i=nSiz0; i<nSiz1; i++)
+ {
+ SdrHdl* pHdl=aHdl.GetHdl(i);
+ pHdl->SetObj(pObj);
+ pHdl->SetPageView(pPV);
+ pHdl->SetObjHdlNum(sal_uInt16(i-nSiz0));
+ if (bPoly)
+ {
+ sal_Bool bSelected=pMrkPnts!=NULL && pMrkPnts->Exist(sal_uInt16(i-nSiz0));
+ pHdl->SetSelected(bSelected);
+ //sal_Bool bPlus=bPlusHdlAlways;
+ if (bPlusHdlAlways || bSelected)
{
- // get crop scale
- const basegfx::B2DVector aCropScaleFactor(
- pSdrGrafObj->GetGraphicObject().calculateCropScaling(
- aScale.getX(),
- aScale.getY(),
- rCrop.GetLeft(),
- rCrop.GetTop(),
- rCrop.GetRight(),
- rCrop.GetBottom()));
-
- // apply crop scale
- const double fCropLeft(rCrop.GetLeft() * aCropScaleFactor.getX());
- const double fCropTop(rCrop.GetTop() * aCropScaleFactor.getY());
- const double fCropRight(rCrop.GetRight() * aCropScaleFactor.getX());
- const double fCropBottom(rCrop.GetBottom() * aCropScaleFactor.getY());
-
- aHdl.AddHdl(
- new SdrCropViewHdl(
- aMatrix,
- pSdrGrafObj->GetGraphicObject().GetGraphic(),
- fCropLeft,
- fCropTop,
- fCropRight,
- fCropBottom,
- pSdrGrafObj->IsMirrored()));
+ sal_uInt32 nPlusAnz=pObj->GetPlusHdlCount(*pHdl);
+ for (sal_uInt32 nPlusNum=0; nPlusNum<nPlusAnz; nPlusNum++)
+ {
+ SdrHdl* pPlusHdl=pObj->GetPlusHdl(*pHdl,nPlusNum);
+ if (pPlusHdl!=NULL)
+ {
+ pPlusHdl->SetObj(pObj);
+ pPlusHdl->SetPageView(pPV);
+ pPlusHdl->SetPlusHdl(sal_True);
+ aHdl.AddHdl(pPlusHdl);
+ }
+ }
}
}
}
-
- aHdl.AddHdl(new SdrCropHdl(aRect.TopLeft() ,HDL_UPLFT));
- aHdl.AddHdl(new SdrCropHdl(aRect.TopCenter() ,HDL_UPPER));
- aHdl.AddHdl(new SdrCropHdl(aRect.TopRight() ,HDL_UPRGT));
- aHdl.AddHdl(new SdrCropHdl(aRect.LeftCenter() ,HDL_LEFT ));
- aHdl.AddHdl(new SdrCropHdl(aRect.RightCenter() ,HDL_RIGHT));
- aHdl.AddHdl(new SdrCropHdl(aRect.BottomLeft() ,HDL_LWLFT));
- aHdl.AddHdl(new SdrCropHdl(aRect.BottomCenter(),HDL_LOWER));
- aHdl.AddHdl(new SdrCropHdl(aRect.BottomRight() ,HDL_LWRGT));
- }
- else
- {
- sal_Bool bWdt0=aRect.Left()==aRect.Right();
- sal_Bool bHgt0=aRect.Top()==aRect.Bottom();
- if (bWdt0 && bHgt0)
- {
- aHdl.AddHdl(new SdrHdl(aRect.TopLeft(),HDL_UPLFT));
- }
- else if (!bStdDrag && (bWdt0 || bHgt0))
- {
- aHdl.AddHdl(new SdrHdl(aRect.TopLeft() ,HDL_UPLFT));
- aHdl.AddHdl(new SdrHdl(aRect.BottomRight(),HDL_LWRGT));
- }
- else
- {
- if (!bWdt0 && !bHgt0) aHdl.AddHdl(new SdrHdl(aRect.TopLeft() ,HDL_UPLFT));
- if ( !bHgt0) aHdl.AddHdl(new SdrHdl(aRect.TopCenter() ,HDL_UPPER));
- if (!bWdt0 && !bHgt0) aHdl.AddHdl(new SdrHdl(aRect.TopRight() ,HDL_UPRGT));
- if (!bWdt0 ) aHdl.AddHdl(new SdrHdl(aRect.LeftCenter() ,HDL_LEFT ));
- if (!bWdt0 ) aHdl.AddHdl(new SdrHdl(aRect.RightCenter() ,HDL_RIGHT));
- if (!bWdt0 && !bHgt0) aHdl.AddHdl(new SdrHdl(aRect.BottomLeft() ,HDL_LWLFT));
- if ( !bHgt0) aHdl.AddHdl(new SdrHdl(aRect.BottomCenter(),HDL_LOWER));
- if (!bWdt0 && !bHgt0) aHdl.AddHdl(new SdrHdl(aRect.BottomRight() ,HDL_LWRGT));
- }
- }
- }
- }
- else
- {
- for (sal_uIntPtr nMarkNum=0; nMarkNum<nMarkAnz; nMarkNum++)
- {
- const SdrMark* pM=GetSdrMarkByIndex(nMarkNum);
- SdrObject* pObj=pM->GetMarkedSdrObj();
- SdrPageView* pPV=pM->GetPageView();
- const sal_uIntPtr nSiz0=aHdl.GetHdlCount();
- pObj->AddToHdlList(aHdl);
- const sal_uIntPtr nSiz1=aHdl.GetHdlCount();
- bool bPoly=pObj->IsPolyObj();
- const SdrUShortCont* pMrkPnts=pM->GetMarkedPoints();
- for (sal_uIntPtr i=nSiz0; i<nSiz1; i++)
- {
- SdrHdl* pHdl=aHdl.GetHdl(i);
- pHdl->SetObj(pObj);
- pHdl->SetPageView(pPV);
- pHdl->SetObjHdlNum(sal_uInt16(i-nSiz0));
- if (bPoly)
- {
- sal_Bool bSelected=pMrkPnts!=NULL && pMrkPnts->Exist(sal_uInt16(i-nSiz0));
- pHdl->SetSelected(bSelected);
- //sal_Bool bPlus=bPlusHdlAlways;
- if (bPlusHdlAlways || bSelected)
- {
- sal_uInt32 nPlusAnz=pObj->GetPlusHdlCount(*pHdl);
- for (sal_uInt32 nPlusNum=0; nPlusNum<nPlusAnz; nPlusNum++)
- {
- SdrHdl* pPlusHdl=pObj->GetPlusHdl(*pHdl,nPlusNum);
- if (pPlusHdl!=NULL)
- {
- pPlusHdl->SetObj(pObj);
- pPlusHdl->SetPageView(pPV);
- pPlusHdl->SetPlusHdl(sal_True);
- aHdl.AddHdl(pPlusHdl);
- }
- }
- }
- }
- }
- } // for nMarkNum
- } // if bFrmHdl else
+ }
+ }
+ }
// GluePoint-Handles
for (sal_uIntPtr nMarkNum=0; nMarkNum<nMarkAnz; nMarkNum++)
Modified: openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdoashp.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdoashp.cxx?rev=1579184&r1=1579183&r2=1579184&view=diff
==============================================================================
--- openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdoashp.cxx (original)
+++ openoffice/branches/alg_writerframes/main/svx/source/svdraw/svdoashp.cxx Wed Mar 19 10:14:42 2014
@@ -2598,10 +2598,10 @@ void SdrObjCustomShape::SetVerticalWriti
case SDRTEXTHORZADJUST_BLOCK: aNewSet.Put(SdrTextVertAdjustItem(SDRTEXTVERTADJUST_BLOCK)); break;
}
- SetObjectItemSet( aNewSet );
pOutlinerParaObject = GetOutlinerParaObject();
if ( pOutlinerParaObject )
pOutlinerParaObject->SetVertical(bVertical);
+ SetObjectItemSet( aNewSet );
// restore object size
SetSnapRect(aObjectRect);