summaryrefslogtreecommitdiffstats
path: root/lib/kotext/KoTextCustomItem.h
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
commit8362bf63dea22bbf6736609b0f49c152f975eb63 (patch)
tree0eea3928e39e50fae91d4e68b21b1e6cbae25604 /lib/kotext/KoTextCustomItem.h
downloadkoffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz
koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'lib/kotext/KoTextCustomItem.h')
-rw-r--r--lib/kotext/KoTextCustomItem.h146
1 files changed, 146 insertions, 0 deletions
diff --git a/lib/kotext/KoTextCustomItem.h b/lib/kotext/KoTextCustomItem.h
new file mode 100644
index 000000000..4d081f2da
--- /dev/null
+++ b/lib/kotext/KoTextCustomItem.h
@@ -0,0 +1,146 @@
+// -*- c++ -*-
+/* This file is part of the KDE project
+
+ Original QTextCustomItem is
+ Copyright (C) 1999-2000 Trolltech AS. All rights reserved.
+ KoText modifications
+ Copyright (C) 2001-2005 David Faure <faure@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.
+*/
+
+// This file isn't standalone at this point; it's included by KoRichText.h
+
+/**
+ * KoTextCustomItem is the base class for custom items (i.e. special chars)
+ * Custom items include:
+ * - variables ( KoVariable, kovariable.h )
+ * - in kword: inline images ( KWTextImage, kwtextimage.h ) (to be removed)
+ * - in kword: anchors, i.e. floating frames ( KWAnchor, kwanchor.h )
+ */
+class KOTEXT_EXPORT KoTextCustomItem
+{
+public:
+ KoTextCustomItem( KoTextDocument *p );
+ virtual ~KoTextCustomItem();
+ virtual void draw(QPainter* p, int x, int y, int cx, int cy, int cw, int ch, const QColorGroup& cg, bool selected ) /* = 0*/;
+
+ // Called after the item's paragraph has been formatted
+ virtual void finalize() {}
+
+ void move( int x, int y ) { xpos = x; ypos = y; }
+ int x() const { return xpos; }
+ int y() const { return ypos; }
+
+ // Called when the format of the character is being changed, see KoTextStringChar::setFormat
+ virtual void setFormat( KoTextFormat * ) { }
+
+ //virtual void setPainter( QPainter*, bool adjust );
+
+ enum Placement { PlaceInline = 0, PlaceLeft, PlaceRight };
+ virtual Placement placement() const { return PlaceInline; }
+ bool placeInline() { return placement() == PlaceInline; }
+
+ virtual bool ownLine() const { return FALSE; }
+ // Called for "ownline" items
+ virtual void resize( int nwidth ) { width = nwidth; }
+ virtual void invalidate() {};
+
+ virtual bool isNested() const { return FALSE; }
+ virtual int minimumWidth() const { return 0; }
+ virtual int widthHint() const { return 0; }
+ virtual int ascent() const { return height; }
+
+ virtual QString richText() const { return QString::null; }
+
+ int width;
+ int height;
+
+ QRect geometry() const { return QRect( xpos, ypos, width, height ); }
+
+ virtual bool enter( KoTextCursor *, KoTextDocument *&doc, KoTextParag *&parag, int &idx, int &ox, int &oy, bool atEnd = FALSE );
+ virtual bool enterAt( KoTextCursor *, KoTextDocument *&doc, KoTextParag *&parag, int &idx, int &ox, int &oy, const QPoint & );
+ virtual bool next( KoTextCursor *, KoTextDocument *&doc, KoTextParag *&parag, int &idx, int &ox, int &oy );
+ virtual bool prev( KoTextCursor *, KoTextDocument *&doc, KoTextParag *&parag, int &idx, int &ox, int &oy );
+ virtual bool down( KoTextCursor *, KoTextDocument *&doc, KoTextParag *&parag, int &idx, int &ox, int &oy );
+ virtual bool up( KoTextCursor *, KoTextDocument *&doc, KoTextParag *&parag, int &idx, int &ox, int &oy );
+
+ void setParagraph( KoTextParag * p ) { parag = p; }
+ KoTextParag *paragraph() const { return parag; }
+
+ virtual void pageBreak( int /*y*/, KoTextFlow* /*flow*/ ) {}
+
+ KoTextDocument *parent;
+
+
+
+ /** The text document in which this customitem is */
+ KoTextDocument * textDocument() const { return parent; }
+
+ /** When the user deletes a custom item, it isn't destroyed but
+ * moved into the undo/redo history - setDeleted( true )
+ * and it can be then copied back from there into the real world - setDeleted( false ). */
+ virtual void setDeleted( bool b ) { m_deleted = b; }
+
+ bool isDeleted() const { return m_deleted; }
+
+ /** Called when the item is created or 'deleted' by the user
+ * Most custom items don't need to reimplement those, since
+ * the custom item is simply moved into the undo/redo history
+ * when deleting (or undoing a creation).
+ * It is not deleted and re-created later. */
+ virtual KCommand * createCommand() { return 0L; }
+ virtual KCommand * deleteCommand() { return 0L; }
+
+ /** Save to XML */
+ virtual void save( QDomElement& formatElem ) = 0;
+ /** Save to Oasis XML */
+ virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const = 0;
+ /** Return type of custom item. See DTD for VARIABLE.id docu. */
+ virtual int typeId() const = 0;
+
+ /** Reimplement this to calculate the item width
+ * It is important to start with "if ( m_deleted ) return;" */
+ virtual void resize() {}
+
+ /** Reimplemented by KoVariable to recalculate the value.
+ * It exists at the KoTextCustomItem level so that KoTextParag::setCustomItem
+ * can call it to set the initial value.
+ * This should call always resize(). */
+ virtual void recalc() { resize(); }
+
+ /** The index in paragraph(), where this anchor is
+ * Slightly slow (does a linear search in the paragraph) */
+ int index() const;
+
+ /** The formatting given to this 'special' character
+ * Slightly slow (does a linear search in the paragraph) */
+ KoTextFormat * format() const;
+
+ /**
+ * All coordinates are in pixels.
+ */
+ virtual void drawCustomItem(QPainter* p, int x, int y, int wpix, int hpix, int ascentpix, int cx, int cy, int cw, int ch, const QColorGroup& cg, bool selected, int offset, bool drawingShadow) = 0;
+
+protected:
+ bool m_deleted;
+
+protected:
+ int xpos;
+ int ypos;
+private:
+ KoTextParag *parag;
+};