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.
tdeedu/kig/objects/bogus_imp.h

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