User: vg Date: 2008-08-19 10:18:27+0000 Modified: dba/reportdesign/source/ui/report/StartMarker.cxx
Log: INTEGRATION: CWS dba31a (1.6.28); FILE MERGED 2008/06/26 14:26:34 oj 1.6.28.4: #i77916# impl zooming in report builder 2008/06/24 12:07:39 oj 1.6.28.3: RESYNC: (1.6-1.7); FILE MERGED 2008/06/13 11:40:20 oj 1.6.28.2: #i88506# impl hyphenation 2008/06/09 10:22:15 oj 1.6.28.1: #i88506# insert new flag to offer word boundary breaks File Changes: Directory: /dba/reportdesign/source/ui/report/ ============================================== File [changed]: StartMarker.cxx Url: http://dba.openoffice.org/source/browse/dba/reportdesign/source/ui/report/StartMarker.cxx?r1=1.7&r2=1.8 Delta lines: +65 -53 --------------------- --- StartMarker.cxx 2008-06-16 13:46:57+0000 1.7 +++ StartMarker.cxx 2008-08-19 10:18:24+0000 1.8 @@ -31,16 +31,12 @@ #include "StartMarker.hxx" #include <vcl/image.hxx> #include <vcl/svapp.hxx> -#ifndef _RPTUI_DLGRESID_HRC #include "RptResId.hrc" -#endif #include "ModuleHelper.hxx" #include "ColorChanger.hxx" #include "ReportDefines.hxx" -#include "SectionsWindow.hxx" -#ifndef RTPUI_REPORTDESIGN_HELPID_HRC +#include "SectionWindow.hxx" #include "helpids.hrc" -#endif #include <vcl/help.hxx> #include <vcl/gradient.hxx> #include <vcl/lineinfo.hxx> @@ -50,7 +46,6 @@ #define CORNER_SPACE 5 #define TEXT_WIDTH 10 -#define STRT_BORDER 6 //===================================================================== namespace rptui @@ -65,17 +60,17 @@ DBG_NAME( rpt_OStartMarker ) // ----------------------------------------------------------------------------- -OStartMarker::OStartMarker(OSectionsWindow* _pParent,const ::rtl::OUString& _sColorEntry) +OStartMarker::OStartMarker(OSectionWindow* _pParent,const ::rtl::OUString& _sColorEntry) : OColorListener(_pParent,_sColorEntry) ,m_aVRuler(this,WB_VERT) -,m_aText(this,WB_WORDBREAK) +,m_aText(this,WB_HYPHENATION) ,m_aImage(this,WB_LEFT|WB_TOP) ,m_pParent(_pParent) -,m_nCornerSize(CORNER_SPACE) ,m_bShowRuler(sal_True) { DBG_CTOR( rpt_OStartMarker,NULL); SetUniqueId(HID_RPT_STARTMARKER); + osl_incrementInterlockedCount(&s_nImageRefCount); initDefaultNodeImages(); ImplInitSettings(); @@ -92,7 +87,7 @@ m_aVRuler.SetMargin2(); const MeasurementSystem eSystem = SvtSysLocale().GetLocaleData().getMeasurementSystemEnum(); m_aVRuler.SetUnit(MEASURE_METRIC == eSystem ? FUNIT_CM : FUNIT_INCH); - + SetPaintTransparent(TRUE); } // ----------------------------------------------------------------------------- OStartMarker::~OStartMarker() @@ -109,28 +104,35 @@ // ----------------------------------------------------------------------------- sal_Int32 OStartMarker::getMinHeight() const { - return m_aText.GetTextHeight() + 2*STRT_BORDER + 2; + Fraction aExtraWidth(long(2*REPORT_EXTRA_SPACE)); + aExtraWidth *= GetMapMode().GetScaleX(); + return LogicToPixel(Size(0,m_aText.GetTextHeight())).Height() + (long)aExtraWidth; } // ----------------------------------------------------------------------------- void OStartMarker::Paint( const Rectangle& rRect ) { Window::Paint( rRect ); //SetUpdateMode(FALSE); - Size aSize = GetSizePixel(); + Size aSize = GetOutputSizePixel(); long nSize = aSize.Width(); + const long nCornerWidth = long(CORNER_SPACE * (double)GetMapMode().GetScaleX()); + if ( !isCollapsed() ) - nSize = aSize.Width() - m_aVRuler.GetSizePixel().Width() - m_nCornerSize; - SetClipRegion(Region(Rectangle(Point(),Size( nSize,aSize.Height())))); - aSize.Width() += m_nCornerSize; + { + const long nVRulerWidth = m_aVRuler.GetSizePixel().Width(); + nSize = aSize.Width() - nVRulerWidth/* - m_nCornerSize*/; + SetClipRegion(Region(PixelToLogic(Rectangle(Point(),Size( nSize,aSize.Height()))))); + aSize.Width() += nCornerWidth; + } // if ( !isCollapsed() ) + else + SetClipRegion(); - Point aGcc3WorkaroundTemporary; + const Point aGcc3WorkaroundTemporary; Rectangle aWholeRect(aGcc3WorkaroundTemporary,aSize); { const ColorChanger aColors( this, m_nTextBoundaries, m_nColor ); - - //aGradient.SetBorder(static_cast<USHORT>(m_nCornerSize)); PolyPolygon aPoly; - aPoly.Insert(Polygon(aWholeRect,m_nCornerSize,m_nCornerSize)); + aPoly.Insert(Polygon(aWholeRect,nCornerWidth,nCornerWidth)); Color aStartColor(m_nColor); aStartColor.IncreaseLuminance(10); @@ -143,15 +145,15 @@ Gradient aGradient(GRADIENT_LINEAR,aStartColor,aEndColor); aGradient.SetSteps(static_cast<USHORT>(aSize.Height())); - DrawGradient(aPoly ,aGradient); + DrawGradient(PixelToLogic(aPoly) ,aGradient); } if ( m_bMarked ) { -#define DIFF_DIST 2 - Rectangle aRect( Point(m_nCornerSize,m_nCornerSize), - Size(aSize.Width() - m_nCornerSize- m_nCornerSize,aSize.Height() - m_nCornerSize- m_nCornerSize)); + const long nCornerHeight = long(CORNER_SPACE * (double)GetMapMode().GetScaleY()); + Rectangle aRect( Point(nCornerWidth,nCornerHeight), + Size(aSize.Width() - nCornerWidth - nCornerWidth,aSize.Height() - nCornerHeight - nCornerHeight)); ColorChanger aColors( this, COL_WHITE, COL_WHITE ); - DrawPolyLine(Polygon(aRect),LineInfo(LINE_SOLID,2)); + DrawPolyLine(Polygon(PixelToLogic(aRect)),LineInfo(LINE_SOLID,2 )); } } // ----------------------------------------------------------------------------- @@ -188,19 +190,18 @@ m_aImage.SetImage(*pImage); m_aVRuler.Show(!m_bCollapsed && m_bShowRuler); - m_nCornerSize = CORNER_SPACE; if ( m_aCollapsedLink.IsSet() ) m_aCollapsedLink.Call(this); } - m_pParent->showProperties(this); + m_pParent->showProperties(); } // ----------------------------------------------------------------------- void OStartMarker::initDefaultNodeImages() { if ( !s_pDefCollapsed ) { - s_pDefCollapsed = new Image( ModuleRes( RID_IMG_TREENODE_COLLAPSED) ); + s_pDefCollapsed = new Image( ModuleRes( RID_IMG_TREENODE_COLLAPSED ) ); s_pDefCollapsedHC = new Image( ModuleRes( RID_IMG_TREENODE_COLLAPSED_HC ) ); s_pDefExpanded = new Image( ModuleRes( RID_IMG_TREENODE_EXPANDED ) ); s_pDefExpandedHC = new Image( ModuleRes( RID_IMG_TREENODE_EXPANDED_HC ) ); @@ -224,33 +225,35 @@ // ----------------------------------------------------------------------- void OStartMarker::ImplInitSettings() { - SetBackground( Wallpaper( Application::GetSettings().GetStyleSettings().GetDialogColor() ) ); + // SetBackground( Wallpaper( COL_YELLOW )); + SetBackground( ); SetFillColor( Application::GetSettings().GetStyleSettings().GetDialogColor() ); - //SetTextFillColor( Application::GetSettings().GetStyleSettings().GetDarkShadowColor() ); setColor(); } //------------------------------------------------------------------------------ void OStartMarker::Resize() { - const Size aOutputSize( GetOutputSize() ); + const Size aOutputSize( GetOutputSizePixel() ); const long nOutputWidth = aOutputSize.Width(); const long nOutputHeight = aOutputSize.Height(); - const Size aImageSize = m_aImage.GetImage().GetSizePixel(); - sal_Int32 nY = ::std::min<sal_Int32>(static_cast<sal_Int32>(REPORT_EXTRA_SPACE),static_cast<sal_Int32>((nOutputHeight - aImageSize.Height()) * 0.5)); - if ( m_bCollapsed ) - nY = static_cast<sal_Int32>((nOutputHeight - aImageSize.Height()) * 0.5); - Point aPos(REPORT_EXTRA_SPACE,nY); - - m_aImage.SetPosSizePixel(aPos,Size(aImageSize.Width() + REPORT_EXTRA_SPACE,nOutputHeight - 2*nY)); - aPos.X() += aImageSize.Width() + REPORT_EXTRA_SPACE; - aPos.Y() -= 2; - + Size aImageSize = m_aImage.GetImage().GetSizePixel(); + const MapMode& rMapMode = GetMapMode(); + aImageSize.Width() = long(aImageSize.Width() * (double)rMapMode.GetScaleX()); + aImageSize.Height() = long(aImageSize.Height() * (double)rMapMode.GetScaleY()); const long nVRulerWidth = m_aVRuler.GetSizePixel().Width(); - const Point aRulerPos(nOutputWidth - nVRulerWidth - 5,0); - - m_aText.SetPosSizePixel(aPos,Size(aRulerPos.X() - aPos.X(),nOutputHeight - 2*aPos.Y())); - + const Point aRulerPos(nOutputWidth - nVRulerWidth/* - 5*/,0); + Fraction aExtraWidth(long(REPORT_EXTRA_SPACE)); + aExtraWidth *= rMapMode.GetScaleX(); + + Point aPos(aImageSize.Width() + (long)(aExtraWidth + aExtraWidth), aExtraWidth); + + m_aText.SetPosSizePixel(aPos,Size(aRulerPos.X() - aPos.X(),::std::max<sal_Int32>(nOutputHeight - 2*aPos.Y(),LogicToPixel(Size(0,m_aText.GetTextHeight())).Height()))); + + aPos.X() = aExtraWidth; + aPos.Y() += static_cast<sal_Int32>((LogicToPixel(Size(0,m_aText.GetTextHeight())).Height() - aImageSize.Height()) * 0.5) ; + m_aImage.SetPosSizePixel(aPos,aImageSize);/*Size(aImageSize.Width() + (long)aExtraWidth,aImageSize.Height() + (long)aExtraWidth));*/ + //m_aImage.SetPosPixel(aPos); m_aVRuler.SetPosSizePixel(aRulerPos,Size(nVRulerWidth,nOutputHeight)); } @@ -311,7 +314,16 @@ showRuler(_bCollapsed); } // ----------------------------------------------------------------------- -// ----------------------------------------------------------------------- +void OStartMarker::zoom(const sal_Int16 _nZoom) +{ + setZoomFactor(_nZoom,*this); + m_aVRuler.SetZoom(Fraction(_nZoom,100)); + // setZoomFactor(_nZoom,m_aVRuler); + setZoomFactor(_nZoom,m_aText); + setZoomFactor(_nZoom,m_aImage); + Resize(); + Invalidate(); +} // ----------------------------------------------------------------------- // ======================================================================= } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
