QGIS API Documentation
3.26.3-Buenos Aires (65e4edfdad)
|
Go to the documentation of this file.
48 qDeleteAll( mMetadata );
49 qDeleteAll( mMultiFrameMetadata );
54 if ( !mMetadata.isEmpty() )
61 return new TestLayoutItem( layout );
95 return mMetadata.value( type );
100 return mMultiFrameMetadata.value( type );
105 if ( !metadata || mMetadata.contains( metadata->
type() ) )
108 mMetadata[metadata->
type()] = metadata;
115 if ( !metadata || mMultiFrameMetadata.contains( metadata->
type() ) )
118 mMultiFrameMetadata[metadata->
type()] = metadata;
125 if ( !mMetadata.contains( type ) )
128 return mMetadata[type]->createItem( layout );
133 if ( !mMultiFrameMetadata.contains( type ) )
136 return mMultiFrameMetadata[type]->createMultiFrame( layout );
141 if ( mMetadata.contains( type ) )
143 mMetadata[type]->resolvePaths( properties, pathResolver, saving );
145 else if ( mMultiFrameMetadata.contains( type ) )
147 mMultiFrameMetadata[type]->resolvePaths( properties, pathResolver, saving );
153 QMap<int, QString> types;
154 for (
auto it = mMetadata.constBegin(); it != mMetadata.constEnd(); ++it )
156 types.insert( it.key(), it.value()->visibleName() );
158 for (
auto it = mMultiFrameMetadata.constBegin(); it != mMultiFrameMetadata.constEnd(); ++it )
160 types.insert( it.key(), it.value()->visibleName() );
168 TestLayoutItem::TestLayoutItem(
QgsLayout *layout )
171 int h =
static_cast< int >( 360.0 * qrand() / ( RAND_MAX + 1.0 ) );
172 int s = ( qrand() % ( 200 - 100 + 1 ) ) + 100;
173 int v = ( qrand() % ( 130 - 255 + 1 ) ) + 130;
174 mColor = QColor::fromHsv( h, s, v );
177 properties.insert( QStringLiteral(
"color" ), mColor.name() );
178 properties.insert( QStringLiteral(
"style" ), QStringLiteral(
"solid" ) );
179 properties.insert( QStringLiteral(
"style_border" ), QStringLiteral(
"solid" ) );
180 properties.insert( QStringLiteral(
"color_border" ), QStringLiteral(
"black" ) );
181 properties.insert( QStringLiteral(
"width_border" ), QStringLiteral(
"0.3" ) );
182 properties.insert( QStringLiteral(
"joinstyle" ), QStringLiteral(
"miter" ) );
187 void TestLayoutItem::draw(
QgsRenderContext &context,
const QStyleOptionGraphicsItem *itemStyle )
189 Q_UNUSED( itemStyle )
194 stack.
begin( context );
196 QPainter *painter = context.
painter();
199 painter->setRenderHint( QPainter::Antialiasing,
false );
200 painter->setPen( Qt::NoPen );
201 painter->setBrush( mColor );
205 QPolygonF shapePolygon = QPolygonF( QRectF( 0, 0, rect().width() * scale, rect().height() * scale ) );
206 QList<QPolygonF> rings;
208 mShapeStyleSymbol->startRender( context );
209 mShapeStyleSymbol->renderPolygon( shapePolygon, &rings,
nullptr, context );
210 mShapeStyleSymbol->stopRender( context );
214 stack.
end( context );
@ LayoutPolygon
Polygon shape item.
Layout item for basic filled shapes (e.g. rectangles, ellipses).
void resolvePaths(int type, QVariantMap &properties, const QgsPathResolver &pathResolver, bool saving) const
Resolve paths in properties of a particular symbol layer.
virtual void begin(QgsRenderContext &context)
Begins intercepting paint operations to a render context.
static QgsLayoutItemPolyline * create(QgsLayout *layout)
Returns a new polyline item for the specified layout.
A paint effect which draws the source picture with minor or no alterations.
QgsLayoutItem * createItem(int type, QgsLayout *layout) const
Creates a new instance of a layout item given the item type, and target layout.
Contains information about the context of a rendering operation.
@ RenderMillimeters
Millimeters.
Abstract base class for layout items with the ability to distribute the content to several frames (Qg...
QgsLayoutItemRegistry(QObject *parent=nullptr)
Creates a new empty item registry.
void typeAdded(int type, const QString &name)
Emitted whenever a new item type is added to the registry, with the specified type and visible name.
QgsLayoutItemAbstractMetadata * itemMetadata(int type) const
Returns the metadata for the specified item type.
@ LayoutGroup
Grouped item.
static QgsLayoutItemGroup * create(QgsLayout *layout)
Returns a new group item for the specified layout.
static QgsLayoutItemLegend * create(QgsLayout *layout)
Returns a new legend item for the specified layout.
static QgsLayoutItemMarker * create(QgsLayout *layout)
Returns a new marker item for the specified layout.
~QgsLayoutItemRegistry() override
static QgsLayoutItemTextTable * create(QgsLayout *layout)
Returns a new QgsLayoutItemTextTable for the specified parent layout.
bool addLayoutMultiFrameType(QgsLayoutMultiFrameAbstractMetadata *metadata)
Registers a new layout multiframe type.
bool addLayoutItemType(QgsLayoutItemAbstractMetadata *metadata)
Registers a new layout item type.
@ LayoutPolyline
Polyline shape item.
static QgsLayoutItemPicture * create(QgsLayout *layout)
Returns a new picture item for the specified layout.
static QgsLayoutFrame * create(QgsLayout *layout)
Creates a new QgsLayoutFrame belonging to the specified layout.
static QgsLayoutItemMap * create(QgsLayout *layout)
Returns a new map item for the specified layout.
virtual void end(QgsRenderContext &context)
Ends interception of paint operations to a render context, and draws the result to the render context...
Base class for graphical items within a QgsLayout.
bool populate()
Populates the registry with standard item types.
static QgsFillSymbol * createSimple(const QVariantMap &properties)
Create a fill symbol with one symbol layer: SimpleFill with specified properties.
@ LayoutScaleBar
Scale bar item.
A paint effect which draws a glow within a picture.
@ Rectangle
Rectangle shape.
static QgsLayoutItemPage * create(QgsLayout *layout)
Returns a new page item for the specified layout.
double convertToPainterUnits(double size, QgsUnitTypes::RenderUnit unit, const QgsMapUnitScale &scale=QgsMapUnitScale(), Qgis::RenderSubcomponentProperty property=Qgis::RenderSubcomponentProperty::Generic) const
Converts a size from the specified units to painter units (pixels).
static QgsLayoutItemAttributeTable * create(QgsLayout *layout)
Returns a new QgsLayoutItemAttributeTable for the specified parent layout.
QMap< QString, QString > QgsStringMap
QgsLayoutMultiFrameAbstractMetadata * multiFrameMetadata(int type) const
Returns the metadata for the specified multiframe type.
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
static QgsLayoutItemLabel * create(QgsLayout *layout)
Returns a new label item for the specified layout.
@ LayoutPicture
Picture item.
void appendEffect(QgsPaintEffect *effect)
Appends an effect to the end of the stack.
@ LayoutMarker
Marker item.
void setShapeType(QgsLayoutItemShape::Shape type)
Sets the type of shape (e.g.
@ LayoutTextTable
Preset text table.
QMap< int, QString > itemTypes() const
Returns a map of available item types to translated name.
static QgsLayoutItemPolygon * create(QgsLayout *layout)
Returns a new polygon item for the specified layout.
@ LayoutHtml
Html multiframe item.
QgsLayoutMultiFrame * createMultiFrame(int type, QgsLayout *layout) const
Creates a new instance of a layout multiframe given the multiframe type, and target layout.
QPainter * painter()
Returns the destination QPainter for the render operation.
@ LayoutFrame
Frame item, part of a QgsLayoutMultiFrame object.
static QgsLayoutItemHtml * create(QgsLayout *layout)
Returns a new QgsLayoutItemHtml for the specified parent layout.
@ LayoutItem
Base class for items.
static QgsLayoutItemManualTable * create(QgsLayout *layout)
Returns a new QgsLayoutItemManualTable for the specified parent layout.
@ LayoutAttributeTable
Attribute table.
@ LayoutManualTable
Manual (fixed) table.
@ LayoutLegend
Legend item.
Resolves relative paths into absolute paths and vice versa. Used for writing.
void multiFrameTypeAdded(int type, const QString &name)
Emitted whenever a new multiframe type is added to the registry, with the specified type and visible ...
static QgsLayoutItemScaleBar * create(QgsLayout *layout)
Returns a new scale bar item for the specified layout.
A paint effect which consists of a stack of other chained paint effects.