You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
282 lines
7.0 KiB
282 lines
7.0 KiB
// Copyright (C) 2002 Dominique Devriese <devriese@kde.org>
|
|
|
|
// This program is free software; you can redistribute it and/or
|
|
// modify it under the terms of the GNU General Public License
|
|
// as published by the Free Software Foundation; either version 2
|
|
// of the License, or (at your option) any later version.
|
|
|
|
// This program 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 General Public License for more details.
|
|
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program; if not, write to the Free Software
|
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
// 02110-1301, USA.
|
|
|
|
#ifndef BOGUS_IMP_H
|
|
#define BOGUS_IMP_H
|
|
|
|
#include "object_imp.h"
|
|
#include "../misc/object_hierarchy.h"
|
|
#include "../misc/kigtransform.h"
|
|
|
|
#include <tqstring.h>
|
|
|
|
/**
|
|
* This is the base class for the so-called BogusImp's. These
|
|
* ObjectImp's are not really ObjectImp's, in that they don't
|
|
* represent objects. They exist because ObjectImp's also serve
|
|
* another purpose, namely containing data. They can all be loaded
|
|
* and saved, and the only difference between these objects and normal
|
|
* objects are that these serve *only* to be loaded and saved. This
|
|
* approach adds a lot of flexibility to the Kig system, and has
|
|
* certainly proven itself very valuable.
|
|
*/
|
|
class BogusImp
|
|
: public ObjectImp
|
|
{
|
|
typedef ObjectImp Parent;
|
|
public:
|
|
/**
|
|
* Returns the ObjectImpType representing the BogusImp type.
|
|
*/
|
|
static const ObjectImpType* stype();
|
|
|
|
Coordinate attachPoint( ) const;
|
|
void draw( KigPainter& p ) const;
|
|
bool contains( const Coordinate& p, int width, const KigWidget& w ) const;
|
|
bool inRect( const Rect& r, int width, const KigWidget& w ) const;
|
|
Rect surroundingRect() const;
|
|
|
|
ObjectImp* transform( const Transformation& ) const;
|
|
};
|
|
|
|
/**
|
|
* This ObjectImp represents an invalid object. If a calculation
|
|
* fails, then often an InvalidImp is returned, indicating that the
|
|
* generated object is invalid.
|
|
*/
|
|
class InvalidImp
|
|
: public BogusImp
|
|
{
|
|
public:
|
|
/**
|
|
* Returns the ObjectImpType representing the InvalidImp type.
|
|
*/
|
|
static const ObjectImpType* stype();
|
|
typedef BogusImp Parent;
|
|
|
|
/**
|
|
* Construct a new InvalidImp.
|
|
*/
|
|
InvalidImp();
|
|
InvalidImp* copy() const;
|
|
|
|
const ObjectImpType* type() const;
|
|
void visit( ObjectImpVisitor* vtor ) const;
|
|
|
|
bool canFillInNextEscape() const;
|
|
void fillInNextEscape( TQString& s, const KigDocument& ) const;
|
|
|
|
bool equals( const ObjectImp& rhs ) const;
|
|
};
|
|
|
|
/**
|
|
* This ObjectImp is a BogusImp containing only a double value.
|
|
*/
|
|
class DoubleImp
|
|
: public BogusImp
|
|
{
|
|
double mdata;
|
|
public:
|
|
/**
|
|
* Returns the ObjectImpType representing the DoubleImp type.
|
|
*/
|
|
static const ObjectImpType* stype();
|
|
typedef BogusImp Parent;
|
|
|
|
/**
|
|
* Construct a new DoubleImp containing the value d.
|
|
*/
|
|
DoubleImp( const double d );
|
|
|
|
/**
|
|
* Get hold of the contained data.
|
|
*/
|
|
double data() const { return mdata; }
|
|
/**
|
|
* Set the contained data to d.
|
|
*/
|
|
void setData( double d ) { mdata = d; }
|
|
|
|
DoubleImp* copy() const;
|
|
|
|
const ObjectImpType* type() const;
|
|
void visit( ObjectImpVisitor* vtor ) const;
|
|
|
|
bool canFillInNextEscape() const;
|
|
void fillInNextEscape( TQString& s, const KigDocument& ) const;
|
|
|
|
bool equals( const ObjectImp& rhs ) const;
|
|
};
|
|
|
|
/**
|
|
* This ObjectImp is a BogusImp containing only an int value.
|
|
*/
|
|
class IntImp
|
|
: public BogusImp
|
|
{
|
|
int mdata;
|
|
public:
|
|
/**
|
|
* Returns the ObjectImpType representing the IntImp type..
|
|
*/
|
|
static const ObjectImpType* stype();
|
|
typedef BogusImp Parent;
|
|
|
|
/**
|
|
* Construct a new IntImp containing the value d.
|
|
*/
|
|
IntImp( const int d );
|
|
|
|
/**
|
|
* Get hold of the contained data.
|
|
*/
|
|
int data() const { return mdata; }
|
|
/**
|
|
* Set the contained data to d.
|
|
*/
|
|
void setData( int d ) { mdata = d; }
|
|
|
|
IntImp* copy() const;
|
|
|
|
const ObjectImpType* type() const;
|
|
void visit( ObjectImpVisitor* vtor ) const;
|
|
|
|
bool canFillInNextEscape() const;
|
|
void fillInNextEscape( TQString& s, const KigDocument& ) const;
|
|
|
|
bool equals( const ObjectImp& rhs ) const;
|
|
};
|
|
|
|
/**
|
|
* This ObjectImp is a BogusImp containing only a string value.
|
|
*/
|
|
class StringImp
|
|
: public BogusImp
|
|
{
|
|
TQString mdata;
|
|
public:
|
|
/**
|
|
* Returns the ObjectImpType representing the StringImp type..
|
|
*/
|
|
static const ObjectImpType* stype();
|
|
typedef BogusImp Parent;
|
|
|
|
/**
|
|
* Construct a new StringImp containing the string d.
|
|
*/
|
|
StringImp( const TQString& d );
|
|
|
|
/**
|
|
* Get hold of the contained data.
|
|
*/
|
|
const TQString& data() const { return mdata; }
|
|
/**
|
|
* Set the contained data.
|
|
*/
|
|
void setData( const TQString& s ) { mdata = s; }
|
|
|
|
StringImp* copy() const;
|
|
|
|
const ObjectImpType* type() const;
|
|
void visit( ObjectImpVisitor* vtor ) const;
|
|
|
|
bool canFillInNextEscape() const;
|
|
void fillInNextEscape( TQString& s, const KigDocument& ) const;
|
|
|
|
bool equals( const ObjectImp& rhs ) const;
|
|
};
|
|
|
|
class HierarchyImp
|
|
: public BogusImp
|
|
{
|
|
ObjectHierarchy mdata;
|
|
public:
|
|
static const ObjectImpType* stype();
|
|
typedef BogusImp Parent;
|
|
|
|
HierarchyImp( const ObjectHierarchy& h );
|
|
|
|
const ObjectHierarchy& data() const { return mdata; }
|
|
void setData( const ObjectHierarchy& h ) { mdata = h; }
|
|
|
|
HierarchyImp* copy() const;
|
|
const char* baseName() const;
|
|
|
|
const ObjectImpType* type() const;
|
|
void visit( ObjectImpVisitor* vtor ) const;
|
|
|
|
bool equals( const ObjectImp& rhs ) const;
|
|
};
|
|
|
|
/**
|
|
* \internal Don't mistake this imp for something that draws a
|
|
* transformed object. It does something completely different. It's
|
|
* a pure data Imp, like DoubleImp and friends that serves only to
|
|
* store the data of a transformation ( see the Transformation class
|
|
* in ../misc/kigtransform.h
|
|
*/
|
|
class TransformationImp
|
|
: public BogusImp
|
|
{
|
|
Transformation mdata;
|
|
public:
|
|
static const ObjectImpType* stype();
|
|
typedef BogusImp Parent;
|
|
|
|
TransformationImp( const Transformation& h );
|
|
|
|
const Transformation& data() const { return mdata; }
|
|
void setData( const Transformation& h ) { mdata = h; }
|
|
|
|
TransformationImp* copy() const;
|
|
|
|
const ObjectImpType* type() const;
|
|
void visit( ObjectImpVisitor* vtor ) const;
|
|
|
|
bool equals( const ObjectImp& rhs ) const;
|
|
};
|
|
|
|
class TestResultImp
|
|
: public BogusImp
|
|
{
|
|
const TQString mdata;
|
|
public:
|
|
static const ObjectImpType* stype();
|
|
typedef BogusImp Parent;
|
|
|
|
TestResultImp( const TQString& s );
|
|
|
|
TestResultImp* copy() const;
|
|
|
|
const TQString& data() const { return mdata; }
|
|
|
|
const ObjectImpType* type() const;
|
|
void visit( ObjectImpVisitor* vtor ) const;
|
|
|
|
const uint numberOfProperties() const;
|
|
const QCStringList properties() const;
|
|
const QCStringList propertiesInternalNames() const;
|
|
ObjectImp* property( uint which, const KigDocument& d ) const;
|
|
const char* iconForProperty( uint which ) const;
|
|
const ObjectImpType* impRequirementForProperty( uint which ) const;
|
|
bool isPropertyDefinedOnOrThroughThisImp( uint which ) const;
|
|
|
|
bool equals( const ObjectImp& rhs ) const;
|
|
};
|
|
|
|
#endif
|