1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
/* This file is part of the KDE project
* Copyright (C) 2006, 2009-2010 Thomas Zander <zander@kde.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef KOTEXTSHAPEDATA_H
#define KOTEXTSHAPEDATA_H
#include "KoText.h"
#include "textlayout_export.h"
#include <KoTextShapeDataBase.h>
#include <KoInsets.h>
#include <KoXmlReaderForward.h>
class QTextDocument;
class QTextCursor;
class KoXmlWriter;
class KoShapeLoadingContext;
class KoShapeSavingContext;
class KoTextShapeDataPrivate;
class KoTextPage;
class KoDocumentRdfBase;
class KoTextLayoutRootArea;
/**
* The data store that is held by each TextShape instance.
* This is a separate object to allow Words proper to use this class' API and
* access the internals of the text shape.
*
* This class holds a QTextDocument pointer and is built so multiple shapes (and thus
* multiple instances of this shape data) can share one QTextDocument by providing a
* different view on (a different part of) the QTextDocument.
*/
class TEXTLAYOUT_EXPORT KoTextShapeData : public KoTextShapeDataBase
{
Q_OBJECT
public:
/// constructor
KoTextShapeData();
virtual ~KoTextShapeData();
/**
* Replace the QTextDocument this shape will render.
* @param document the new document. If there was an old document owned, it will be deleted.
* @param transferOwnership if true then the document will be considered the responsibility
* of this data and the doc will be deleted when this shapeData dies.
*/
void setDocument(QTextDocument *document, bool transferOwnership = true);
/**
* return the amount of points into the document (y) this shape will display.
*/
qreal documentOffset() const;
/// mark shape as dirty triggering a re-layout of its text.
void setDirty();
/// return if the shape is marked dirty and its text content needs to be relayout
bool isDirty() const;
/// returns true if the selection of the cursor is visible in this shape
bool isCursorVisible(QTextCursor *cursor) const;
/// Set the rootArea that is associated to the textshape
void setRootArea(KoTextLayoutRootArea *rootArea);
/// the rootArea that is associated to the textshape
KoTextLayoutRootArea *rootArea();
/**
* Load the TextShape from ODF.
*
* @see the @a TextShape::loadOdf() method which calls this method.
* @see the @a KoTextLoader::loadBody() method which got called by this method
* to load the ODF.
*/
bool loadOdf(const KoXmlElement &element, KoShapeLoadingContext &context, KoDocumentRdfBase *rdfData, KoShape *shape = 0);
/**
* Load the TextShape from ODF.
* Overloaded method provided for your convenience.
*/
virtual bool loadOdf(const KoXmlElement &element, KoShapeLoadingContext &context) {
return loadOdf(element, context, 0);
}
/**
* Store the TextShape data as ODF.
* @see TextShape::saveOdf()
*/
void saveOdf(KoShapeSavingContext &context, KoDocumentRdfBase *rdfData, int from = 0, int to = -1) const;
/**
* Store the TextShape data as ODF.
* Overloaded method provided for your convenience.
*/
virtual void saveOdf(KoShapeSavingContext &context, int from = 0, int to = -1) const {
saveOdf(context, 0, from, to);
}
// reimplemented
virtual void loadStyle(const KoXmlElement &element, KoShapeLoadingContext &context);
// reimplemented
virtual void saveStyle(KoGenStyle &style, KoShapeSavingContext &context) const;
/**
* Set the page direction.
* The page direction will determine behavior on the insertion of new text and those
* new paragraphs default direction.
*/
void setPageDirection(KoText::Direction direction);
/**
* Return the direction set on the page.
* The page direction will determine behavior on the insertion of new text and those
* new paragraphs default direction.
*/
KoText::Direction pageDirection() const;
private:
Q_DECLARE_PRIVATE(KoTextShapeData)
};
#endif
|