LCOV - code coverage report
Current view: top level - core/textrenderer - qgstextrenderer_p.h (source / functions) Hit Total Coverage
Test: coverage.info.cleaned Lines: 75 169 44.4 %
Date: 2021-03-26 12:19:53 Functions: 0 0 -
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /***************************************************************************
       2                 :            :   qgstextrenderer.h
       3                 :            :   -----------------
       4                 :            :    begin                : September 2015
       5                 :            :    copyright            : (C) Nyall Dawson
       6                 :            :    email                : nyall dot dawson at gmail dot com
       7                 :            : 
       8                 :            :  ***************************************************************************
       9                 :            :  *                                                                         *
      10                 :            :  *   This program is free software; you can redistribute it and/or modify  *
      11                 :            :  *   it under the terms of the GNU General Public License as published by  *
      12                 :            :  *   the Free Software Foundation; either version 2 of the License, or     *
      13                 :            :  *   (at your option) any later version.                                   *
      14                 :            :  *                                                                         *
      15                 :            :  ***************************************************************************/
      16                 :            : 
      17                 :            : #ifndef QGSTEXTRENDERER_PRIVATE_H
      18                 :            : #define QGSTEXTRENDERER_PRIVATE_H
      19                 :            : 
      20                 :            : #define SIP_NO_FILE
      21                 :            : 
      22                 :            : #include "qgis_core.h"
      23                 :            : #include "qgstextshadowsettings.h"
      24                 :            : #include "qgstextbackgroundsettings.h"
      25                 :            : #include "qgstextformat.h"
      26                 :            : #include "qgsmapunitscale.h"
      27                 :            : #include "qgsunittypes.h"
      28                 :            : #include "qgsapplication.h"
      29                 :            : #include "qgspainteffect.h"
      30                 :            : #include "qgssymbollayerreference.h"
      31                 :            : #include "qgsstringutils.h"
      32                 :            : 
      33                 :            : #include <QSharedData>
      34                 :            : #include <QPainter>
      35                 :            : 
      36                 :            : /// @cond
      37                 :            : 
      38                 :            : //
      39                 :            : //  W A R N I N G
      40                 :            : //  -------------
      41                 :            : //
      42                 :            : // This file is not part of the QGIS API.  It exists purely as an
      43                 :            : // implementation detail.  This header file may change from version to
      44                 :            : // version without notice, or even be removed.
      45                 :            : //
      46                 :            : 
      47                 :            : 
      48                 :         62 : class QgsTextBufferSettingsPrivate : public QSharedData
      49                 :            : {
      50                 :            :   public:
      51                 :            : 
      52                 :         78 :     QgsTextBufferSettingsPrivate()
      53                 :         78 :       : color( Qt::white )
      54                 :         78 :     {
      55                 :         78 :     }
      56                 :            : 
      57                 :          0 :     QgsTextBufferSettingsPrivate( const QgsTextBufferSettingsPrivate &other )
      58                 :          0 :       : QSharedData( other )
      59                 :          0 :       , enabled( other.enabled )
      60                 :          0 :       , size( other.size )
      61                 :          0 :       , sizeUnit( other.sizeUnit )
      62                 :          0 :       , sizeMapUnitScale( other.sizeMapUnitScale )
      63                 :          0 :       , color( other.color )
      64                 :          0 :       , opacity( other.opacity )
      65                 :          0 :       , fillBufferInterior( other.fillBufferInterior )
      66                 :          0 :       , joinStyle( other.joinStyle )
      67                 :          0 :       , blendMode( other.blendMode )
      68                 :          0 :       , paintEffect( other.paintEffect ? other.paintEffect->clone() : nullptr )
      69                 :          0 :     {
      70                 :          0 :     }
      71                 :            : 
      72                 :         78 :     bool enabled = false;
      73                 :         78 :     double size = 1;
      74                 :         78 :     QgsUnitTypes::RenderUnit sizeUnit = QgsUnitTypes::RenderMillimeters;
      75                 :            :     QgsMapUnitScale sizeMapUnitScale;
      76                 :            :     QColor color;
      77                 :         78 :     double opacity = 1.0;
      78                 :         78 :     bool fillBufferInterior = false;
      79                 :         78 :     Qt::PenJoinStyle joinStyle = Qt::RoundJoin;
      80                 :         78 :     QPainter::CompositionMode blendMode = QPainter::CompositionMode_SourceOver;
      81                 :            :     std::unique_ptr< QgsPaintEffect > paintEffect;
      82                 :            : 
      83                 :            :   private:
      84                 :            :     QgsTextBufferSettingsPrivate &operator=( const QgsTextBufferSettingsPrivate & ) = delete;
      85                 :            : };
      86                 :            : 
      87                 :            : 
      88                 :         62 : class QgsTextBackgroundSettingsPrivate : public QSharedData
      89                 :            : {
      90                 :            :   public:
      91                 :            : 
      92                 :        156 :     QgsTextBackgroundSettingsPrivate()
      93                 :         78 :       : size( QSizeF( 0.0, 0.0 ) )
      94                 :         78 :       , offset( QPointF( 0.0, 0.0 ) )
      95                 :         78 :       , radii( QSizeF( 0.0, 0.0 ) )
      96                 :         78 :       , fillColor( Qt::white )
      97                 :         78 :       , strokeColor( Qt::darkGray )
      98                 :         78 :     {
      99                 :         78 :     }
     100                 :            : 
     101                 :          0 :     QgsTextBackgroundSettingsPrivate( const QgsTextBackgroundSettingsPrivate &other )
     102                 :          0 :       : QSharedData( other )
     103                 :          0 :       , enabled( other.enabled )
     104                 :          0 :       , type( other.type )
     105                 :          0 :       , svgFile( other.svgFile )
     106                 :          0 :       , sizeType( other.sizeType )
     107                 :          0 :       , size( other.size )
     108                 :          0 :       , sizeUnits( other.sizeUnits )
     109                 :          0 :       , sizeMapUnitScale( other.sizeMapUnitScale )
     110                 :          0 :       , rotationType( other.rotationType )
     111                 :          0 :       , rotation( other.rotation )
     112                 :          0 :       , offset( other.offset )
     113                 :          0 :       , offsetUnits( other.offsetUnits )
     114                 :          0 :       , offsetMapUnitScale( other.offsetMapUnitScale )
     115                 :          0 :       , radii( other.radii )
     116                 :          0 :       , radiiUnits( other.radiiUnits )
     117                 :          0 :       , radiiMapUnitScale( other.radiiMapUnitScale )
     118                 :          0 :       , blendMode( other.blendMode )
     119                 :          0 :       , fillColor( other.fillColor )
     120                 :          0 :       , strokeColor( other.strokeColor )
     121                 :          0 :       , opacity( other.opacity )
     122                 :          0 :       , strokeWidth( other.strokeWidth )
     123                 :          0 :       , strokeWidthUnits( other.strokeWidthUnits )
     124                 :          0 :       , strokeWidthMapUnitScale( other.strokeWidthMapUnitScale )
     125                 :          0 :       , joinStyle( other.joinStyle )
     126                 :          0 :       , paintEffect( other.paintEffect ? other.paintEffect->clone() : nullptr )
     127                 :          0 :       , markerSymbol( other.markerSymbol ? other.markerSymbol->clone() : nullptr )
     128                 :          0 :     {
     129                 :          0 :     }
     130                 :            : 
     131                 :         78 :     bool enabled = false;
     132                 :         78 :     QgsTextBackgroundSettings::ShapeType type = QgsTextBackgroundSettings::ShapeRectangle;
     133                 :            :     QString svgFile;   //!< Absolute path to SVG file
     134                 :         78 :     QgsTextBackgroundSettings::SizeType sizeType = QgsTextBackgroundSettings::SizeBuffer;
     135                 :            :     QSizeF size;
     136                 :         78 :     QgsUnitTypes::RenderUnit sizeUnits = QgsUnitTypes::RenderMillimeters;
     137                 :            :     QgsMapUnitScale sizeMapUnitScale;
     138                 :         78 :     QgsTextBackgroundSettings::RotationType rotationType = QgsTextBackgroundSettings::RotationSync;
     139                 :         78 :     double rotation = 0.0;
     140                 :            :     QPointF offset;
     141                 :         78 :     QgsUnitTypes::RenderUnit offsetUnits = QgsUnitTypes::RenderMillimeters;
     142                 :            :     QgsMapUnitScale offsetMapUnitScale;
     143                 :            :     QSizeF radii;
     144                 :         78 :     QgsUnitTypes::RenderUnit radiiUnits = QgsUnitTypes::RenderMillimeters;
     145                 :            :     QgsMapUnitScale radiiMapUnitScale;
     146                 :         78 :     QPainter::CompositionMode blendMode = QPainter::CompositionMode_SourceOver;
     147                 :            :     QColor fillColor;
     148                 :            :     QColor strokeColor;
     149                 :         78 :     double opacity = 1.0;
     150                 :         78 :     double strokeWidth = 0.0;
     151                 :         78 :     QgsUnitTypes::RenderUnit strokeWidthUnits = QgsUnitTypes::RenderMillimeters;
     152                 :            :     QgsMapUnitScale strokeWidthMapUnitScale;
     153                 :         78 :     Qt::PenJoinStyle joinStyle = Qt::BevelJoin;
     154                 :            :     std::unique_ptr< QgsPaintEffect > paintEffect;
     155                 :            :     std::unique_ptr< QgsMarkerSymbol > markerSymbol;
     156                 :            : 
     157                 :            :   private:
     158                 :            :     QgsTextBackgroundSettingsPrivate &operator=( const QgsTextBackgroundSettingsPrivate & ) = delete;
     159                 :            : };
     160                 :            : 
     161                 :            : 
     162                 :            : 
     163                 :            : class QgsTextShadowSettingsPrivate : public QSharedData
     164                 :            : {
     165                 :            :   public:
     166                 :            : 
     167                 :         78 :     QgsTextShadowSettingsPrivate()
     168                 :         78 :       : color( QColor( 0, 0, 0 ) )
     169                 :         78 :     {
     170                 :            : 
     171                 :         78 :     }
     172                 :            : 
     173                 :          0 :     QgsTextShadowSettingsPrivate( const QgsTextShadowSettingsPrivate &other )
     174                 :          0 :       : QSharedData( other )
     175                 :          0 :       , enabled( other.enabled )
     176                 :          0 :       , shadowUnder( other.shadowUnder )
     177                 :          0 :       , offsetAngle( other.offsetAngle )
     178                 :          0 :       , offsetDist( other.offsetDist )
     179                 :          0 :       , offsetUnits( other.offsetUnits )
     180                 :          0 :       , offsetMapUnitScale( other.offsetMapUnitScale )
     181                 :          0 :       , offsetGlobal( other.offsetGlobal )
     182                 :          0 :       , radius( other.radius )
     183                 :          0 :       , radiusUnits( other.radiusUnits )
     184                 :          0 :       , radiusMapUnitScale( other.radiusMapUnitScale )
     185                 :          0 :       , radiusAlphaOnly( other.radiusAlphaOnly )
     186                 :          0 :       , scale( other.scale )
     187                 :          0 :       , color( other.color )
     188                 :          0 :       , opacity( other.opacity )
     189                 :          0 :       , blendMode( other.blendMode )
     190                 :          0 :     {
     191                 :          0 :     }
     192                 :            : 
     193                 :         78 :     bool enabled = false;
     194                 :         78 :     QgsTextShadowSettings::ShadowPlacement shadowUnder = QgsTextShadowSettings::ShadowLowest;
     195                 :         78 :     int offsetAngle = 135;
     196                 :         78 :     double offsetDist = 1.0;
     197                 :         78 :     QgsUnitTypes::RenderUnit offsetUnits = QgsUnitTypes::RenderMillimeters;
     198                 :            :     QgsMapUnitScale offsetMapUnitScale;
     199                 :         78 :     bool offsetGlobal = true;
     200                 :         78 :     double radius = 1.5;
     201                 :         78 :     QgsUnitTypes::RenderUnit radiusUnits = QgsUnitTypes::RenderMillimeters;
     202                 :            :     QgsMapUnitScale radiusMapUnitScale;
     203                 :         78 :     bool radiusAlphaOnly = false;
     204                 :         78 :     int scale = 100;
     205                 :            :     QColor color;
     206                 :         78 :     double opacity = 0.7;
     207                 :         78 :     QPainter::CompositionMode blendMode = QPainter::CompositionMode_Multiply;
     208                 :            : 
     209                 :            :   private:
     210                 :            :     QgsTextShadowSettingsPrivate &operator=( const QgsTextShadowSettingsPrivate & ) = delete;
     211                 :            : };
     212                 :            : 
     213                 :            : 
     214                 :         62 : class QgsTextMaskSettingsPrivate : public QSharedData
     215                 :            : {
     216                 :            :   public:
     217                 :            : 
     218                 :         78 :     QgsTextMaskSettingsPrivate()
     219                 :         78 :     {
     220                 :            : 
     221                 :         78 :     }
     222                 :            : 
     223                 :          0 :     QgsTextMaskSettingsPrivate( const QgsTextMaskSettingsPrivate &other )
     224                 :          0 :       : QSharedData( other )
     225                 :          0 :       , enabled( other.enabled )
     226                 :          0 :       , type( other.type )
     227                 :          0 :       , size( other.size )
     228                 :          0 :       , sizeUnit( other.sizeUnit )
     229                 :          0 :       , sizeMapUnitScale( other.sizeMapUnitScale )
     230                 :          0 :       , joinStyle( other.joinStyle )
     231                 :          0 :       , opacity( other.opacity )
     232                 :          0 :       , paintEffect( other.paintEffect ? other.paintEffect->clone() : nullptr )
     233                 :          0 :       , maskedSymbolLayers( other.maskedSymbolLayers )
     234                 :          0 :     {
     235                 :          0 :     }
     236                 :            : 
     237                 :         78 :     bool enabled = false;
     238                 :         78 :     QgsTextMaskSettings::MaskType type = QgsTextMaskSettings::MaskBuffer;
     239                 :         78 :     double size = 1.5;
     240                 :         78 :     QgsUnitTypes::RenderUnit sizeUnit = QgsUnitTypes::RenderMillimeters;
     241                 :            :     QgsMapUnitScale sizeMapUnitScale;
     242                 :         78 :     Qt::PenJoinStyle joinStyle = Qt::RoundJoin;
     243                 :         78 :     double opacity = 1.0;
     244                 :            :     std::unique_ptr< QgsPaintEffect > paintEffect;
     245                 :            :     QgsSymbolLayerReferenceList maskedSymbolLayers;
     246                 :            : 
     247                 :            :   private:
     248                 :            :     QgsTextMaskSettingsPrivate &operator=( const QgsTextMaskSettingsPrivate & ) = delete;
     249                 :            : };
     250                 :            : 
     251                 :            : 
     252                 :         62 : class QgsTextSettingsPrivate : public QSharedData
     253                 :            : {
     254                 :            :   public:
     255                 :            : 
     256                 :         78 :     QgsTextSettingsPrivate()
     257                 :         78 :       : textColor( Qt::black )
     258                 :         78 :     {
     259                 :         78 :     }
     260                 :            : 
     261                 :          0 :     QgsTextSettingsPrivate( const QgsTextSettingsPrivate &other )
     262                 :          0 :       : QSharedData( other )
     263                 :          0 :       , isValid( other.isValid )
     264                 :          0 :       , textFont( other.textFont )
     265                 :          0 :       , textNamedStyle( other.textNamedStyle )
     266                 :          0 :       , fontSizeUnits( other.fontSizeUnits )
     267                 :          0 :       , fontSizeMapUnitScale( other.fontSizeMapUnitScale )
     268                 :          0 :       , fontSize( other.fontSize )
     269                 :          0 :       , textColor( other.textColor )
     270                 :          0 :       , opacity( other.opacity )
     271                 :          0 :       , blendMode( other.blendMode )
     272                 :          0 :       , multilineHeight( other.multilineHeight )
     273                 :          0 :       , orientation( other.orientation )
     274                 :          0 :       , previewBackgroundColor( other.previewBackgroundColor )
     275                 :          0 :       , allowHtmlFormatting( other.allowHtmlFormatting )
     276                 :          0 :       , capitalization( other.capitalization )
     277                 :          0 :       , mDataDefinedProperties( other.mDataDefinedProperties )
     278                 :          0 :     {
     279                 :          0 :     }
     280                 :            : 
     281                 :         78 :     bool isValid = false;
     282                 :            :     QFont textFont;
     283                 :            :     QString textNamedStyle;
     284                 :         78 :     QgsUnitTypes::RenderUnit fontSizeUnits = QgsUnitTypes::RenderPoints;
     285                 :            :     QgsMapUnitScale fontSizeMapUnitScale;
     286                 :         78 :     double fontSize = 10 ; //may differ from size in textFont due to units (e.g., size in map units)
     287                 :            :     QColor textColor;
     288                 :         78 :     double opacity = 1.0;
     289                 :         78 :     QPainter::CompositionMode blendMode = QPainter::CompositionMode_SourceOver;
     290                 :         78 :     double multilineHeight = 1.0 ; //0.0 to 10.0, leading between lines as multiplyer of line height
     291                 :         78 :     QgsTextFormat::TextOrientation orientation = QgsTextFormat::HorizontalOrientation;
     292                 :         78 :     QColor previewBackgroundColor = Qt::white;
     293                 :         78 :     bool allowHtmlFormatting = false;
     294                 :         78 :     QgsStringUtils::Capitalization capitalization = QgsStringUtils::MixedCase;
     295                 :            : 
     296                 :            :     //! Property collection for data defined settings
     297                 :            :     QgsPropertyCollection mDataDefinedProperties;
     298                 :            : 
     299                 :            :   private:
     300                 :            :     QgsTextSettingsPrivate &operator=( const QgsTextSettingsPrivate & ) = delete;
     301                 :            : };
     302                 :            : 
     303                 :            : 
     304                 :            : 
     305                 :            : 
     306                 :            : 
     307                 :            : /// @endcond
     308                 :            : 
     309                 :            : #endif // QGSTEXTRENDERER_PRIVATE_H

Generated by: LCOV version 1.14