INTEGRATION: CWS presentationengine01 (1.2.2); FILE MERGED
2004/11/01 22:21:49 thb 1.2.2.7: #110496# Performance optimizations: added profiling traces 2004/08/23 19:15:49 thb 1.2.2.6: #110496# Added more overridable attributes (needed for slideshow attribute animations 2004/07/20 19:09:01 thb 1.2.2.5: #110496# Unified include statements; removed external prefix from boost includes 2004/06/03 14:18:46 thb 1.2.2.4: #110496# Fixed crash occuring when no font was set before text rendering 2004/05/11 15:20:28 hdu 1.2.2.3: #116716# adjust to new BiDi options 2004/04/12 15:13:20 thb 1.2.2.2: #110496# Adaptions after canvas01 merge 2004/04/05 15:58:49 thb 1.2.2.1: Resync with canvas01 changes
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
*
|
||||
* $RCSfile: textaction.cxx,v $
|
||||
*
|
||||
* $Revision: 1.2 $
|
||||
* $Revision: 1.3 $
|
||||
*
|
||||
* last change: $Author: thb $ $Date: 2004-03-18 10:41:07 $
|
||||
* last change: $Author: rt $ $Date: 2004-11-26 20:57:05 $
|
||||
*
|
||||
* The Contents of this file are made available subject to the terms of
|
||||
* either of the following licenses
|
||||
@@ -59,8 +59,16 @@
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
#include "textaction.hxx"
|
||||
#include "outdevstate.hxx"
|
||||
#include <textaction.hxx>
|
||||
#include <outdevstate.hxx>
|
||||
|
||||
#ifndef _RTL_LOGFILE_HXX_
|
||||
#include <rtl/logfile.hxx>
|
||||
#endif
|
||||
|
||||
#ifndef _DRAFTS_COM_SUN_STAR_RENDERING_XCANVAS_HPP_
|
||||
#include <drafts/com/sun/star/rendering/XCanvas.hpp>
|
||||
#endif
|
||||
|
||||
#ifndef _BGFX_MATRIX_B2DHOMMATRIX_HXX
|
||||
#include <basegfx/matrix/b2dhommatrix.hxx>
|
||||
@@ -80,7 +88,7 @@
|
||||
#include <canvas/canvastools.hxx>
|
||||
#endif
|
||||
|
||||
#include "mtftools.hxx"
|
||||
#include <mtftools.hxx>
|
||||
|
||||
|
||||
using namespace ::drafts::com::sun::star;
|
||||
@@ -90,11 +98,38 @@ namespace cppcanvas
|
||||
{
|
||||
namespace internal
|
||||
{
|
||||
void TextAction::init( const ::Point& rStartPoint,
|
||||
const OutDevState& rState )
|
||||
void TextAction::init( const ::Point& rStartPoint,
|
||||
const OutDevState& rState,
|
||||
const ::comphelper::OptionalValue< ::basegfx::B2DHomMatrix >& rTextTransform )
|
||||
{
|
||||
// ensure that mxFont is valid. It is possible that text actions
|
||||
// are generated without previously setting a font. Then, just
|
||||
// take a default font
|
||||
if( !mxFont.is() )
|
||||
{
|
||||
// Use completely default FontRequest
|
||||
const rendering::FontRequest aFontRequest;
|
||||
|
||||
geometry::Matrix2D aFontMatrix;
|
||||
::canvas::tools::setIdentityMatrix2D( aFontMatrix );
|
||||
|
||||
mxFont =
|
||||
mpCanvas->getUNOCanvas()->createFont( aFontRequest,
|
||||
uno::Sequence< beans::PropertyValue >(),
|
||||
aFontMatrix );
|
||||
}
|
||||
|
||||
tools::initRenderState(maState,rState);
|
||||
|
||||
if( rTextTransform.isValid() )
|
||||
{
|
||||
// prepend extra font transform to render state
|
||||
// (prepend it, because it's interpreted in the unit
|
||||
// rect coordinate space)
|
||||
::canvas::tools::prependToRenderState( maState,
|
||||
rTextTransform.getValue() );
|
||||
}
|
||||
|
||||
::basegfx::B2DHomMatrix aLocalTransformation( rState.fontTransform );
|
||||
|
||||
aLocalTransformation.translate( rStartPoint.X(),
|
||||
@@ -102,15 +137,26 @@ namespace cppcanvas
|
||||
::canvas::tools::appendToRenderState( maState,
|
||||
aLocalTransformation );
|
||||
|
||||
// append text transform, if given
|
||||
|
||||
maState.DeviceColor = rState.textColor;
|
||||
|
||||
if( maOffsets.getLength() )
|
||||
{
|
||||
mxTextLayout = mxFont->createTextLayout( maStringContext, rState.textDirection, 0 );
|
||||
|
||||
if( mxTextLayout.is() )
|
||||
mxTextLayout->applyLogicalAdvancements( maOffsets );
|
||||
}
|
||||
}
|
||||
|
||||
TextAction::TextAction( const ::Point& rStartPoint,
|
||||
const ::rtl::OUString& rText,
|
||||
sal_Int32 nStartPos,
|
||||
sal_Int32 nLen,
|
||||
const CanvasSharedPtr& rCanvas,
|
||||
const OutDevState& rState ) :
|
||||
TextAction::TextAction( const ::Point& rStartPoint,
|
||||
const ::rtl::OUString& rText,
|
||||
sal_Int32 nStartPos,
|
||||
sal_Int32 nLen,
|
||||
const CanvasSharedPtr& rCanvas,
|
||||
const OutDevState& rState,
|
||||
const ::comphelper::OptionalValue< ::basegfx::B2DHomMatrix >& rTextTransform ) :
|
||||
mxFont( rState.xFont ),
|
||||
maStringContext( rText, nStartPos, nLen ),
|
||||
maOffsets(),
|
||||
@@ -118,16 +164,17 @@ namespace cppcanvas
|
||||
maState(),
|
||||
maTextDirection( rState.textDirection )
|
||||
{
|
||||
init( rStartPoint, rState );
|
||||
init( rStartPoint, rState, rTextTransform );
|
||||
}
|
||||
|
||||
TextAction::TextAction( const ::Point& rStartPoint,
|
||||
const ::rtl::OUString& rText,
|
||||
sal_Int32 nStartPos,
|
||||
sal_Int32 nLen,
|
||||
uno::Sequence< double > aOffsets,
|
||||
const CanvasSharedPtr& rCanvas,
|
||||
const OutDevState& rState ) :
|
||||
TextAction::TextAction( const ::Point& rStartPoint,
|
||||
const ::rtl::OUString& rText,
|
||||
sal_Int32 nStartPos,
|
||||
sal_Int32 nLen,
|
||||
::com::sun::star::uno::Sequence< double > aOffsets,
|
||||
const CanvasSharedPtr& rCanvas,
|
||||
const OutDevState& rState,
|
||||
const ::comphelper::OptionalValue< ::basegfx::B2DHomMatrix >& rTextTransform ) :
|
||||
mxFont( rState.xFont ),
|
||||
maStringContext( rText, nStartPos, nLen ),
|
||||
maOffsets( aOffsets ),
|
||||
@@ -135,21 +182,26 @@ namespace cppcanvas
|
||||
maState(),
|
||||
maTextDirection( rState.textDirection )
|
||||
{
|
||||
init( rStartPoint, rState );
|
||||
init( rStartPoint, rState, rTextTransform );
|
||||
}
|
||||
|
||||
TextAction::~TextAction()
|
||||
{
|
||||
}
|
||||
|
||||
bool TextAction::render() const
|
||||
bool TextAction::render( const ::basegfx::B2DHomMatrix& rTransformation ) const
|
||||
{
|
||||
if( maOffsets.getLength() )
|
||||
mpCanvas->getUNOCanvas()->drawOffsettedText( maStringContext, mxFont, maOffsets,
|
||||
mpCanvas->getViewState(), maState, maTextDirection );
|
||||
RTL_LOGFILE_CONTEXT( aLog, "::cppcanvas::internal::TextAction::render()" );
|
||||
RTL_LOGFILE_CONTEXT_TRACE1( aLog, "::cppcanvas::internal::TextAction: 0x%X", this );
|
||||
|
||||
rendering::RenderState aLocalState( maState );
|
||||
::canvas::tools::prependToRenderState(aLocalState, rTransformation);
|
||||
|
||||
if( mxTextLayout.is() )
|
||||
mpCanvas->getUNOCanvas()->drawTextLayout( mxTextLayout, mpCanvas->getViewState(), aLocalState );
|
||||
else
|
||||
mpCanvas->getUNOCanvas()->drawText( maStringContext, mxFont,
|
||||
mpCanvas->getViewState(), maState, maTextDirection );
|
||||
mpCanvas->getViewState(), aLocalState, maTextDirection );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
Reference in New Issue
Block a user