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.
tdegraphics/kpovmodeler/pmlistpattern.h

351 lines
7.5 KiB

/*
**************************************************************************
description
--------------------
copyright : (C) 2001-2002 by Luis Carvalho
email : lpassos@mail.telepac.pt
**************************************************************************
**************************************************************************
* *
* 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. *
* *
**************************************************************************/
#ifndef PMLISTPATTERN_H
#define PMLISTPATTERN_H
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "pmcompositeobject.h"
#include "pmvector.h"
/**
* Base class for povray lists.
*/
class PMListPattern : public PMCompositeObject
{
typedef PMCompositeObject Base;
public:
/**
* The type of the pigment list
*/
enum PMListType { ListPatternChecker, ListPatternBrick, ListPatternHexagon };
/**
* Creates a PMListPattern
*/
PMListPattern( PMPart* part );
/**
* Copy constructor
*/
PMListPattern( const PMListPattern& p );
/**
* deletes the PMListPattern
*/
virtual ~PMListPattern( );
/**
* Returns the list pattern object type
*/
virtual TQString listObjectType( ) const = 0;
/** */
virtual PMMetaObject* metaObject( ) const;
/** */
virtual void cleanUp( ) const;
/** */
virtual void serialize( TQDomElement& e, TQDomDocument& doc ) const;
/** */
virtual void readAttributes( const PMXMLHelper& h );
/**
* Returns a new @ref PMListPatternEdit
*/
virtual PMDialogEditBase* editWidget( TQWidget* parent ) const;
/**
* Returns the color list type
*/
PMListType listType( ) const { return m_listType; }
/**
* Returns the brick size
*/
PMVector brickSize( ) const { return m_brickSize; }
/**
* Returns the mortar size
*/
double mortar( ) const { return m_mortar; }
/**
* Sets the list type
*/
void setListType( PMListType l );
/**
* Sets the brick size
*/
void setBrickSize( const PMVector& n );
/**
* Sets the mortar size
*/
void setMortar( double n );
/** */
virtual void restoreMemento( PMMemento* s );
private:
/**
* IDs for @ref PMMementoData
*/
enum PMListPatternMementoID { PMListTypeID, PMBrickSizeID, PMMortarID };
/**
* List type
*/
PMListType m_listType;
/**
* Brick Size
*/
PMVector m_brickSize;
/**
* Mortar Size
*/
double m_mortar;
static PMMetaObject* s_pMetaObject;
};
/**
* Class for texture lists
*/
class PMTextureList : public PMListPattern
{
public:
typedef PMListPattern Base;
/**
* Creates a texture list
*/
PMTextureList( PMPart* part );
/**
* Copy constructor
*/
PMTextureList( const PMTextureList& l );
/**
* Deletes the texture list
*/
virtual ~PMTextureList( );
/** */
virtual PMObject* copy( ) const { return new PMTextureList( *this ); }
/** */
virtual TQString description( ) const;
/** */
virtual TQString listObjectType( ) const { return TQString( "Texture" ); }
/** */
virtual PMMetaObject* metaObject( ) const;
/** */
virtual void cleanUp( ) const;
/** */
virtual TQString pixmap( ) const { return TQString( "pmtexturelist" ); }
static PMMetaObject* s_pMetaObject;
};
/**
* Class for pigment lists
*/
class PMPigmentList : public PMListPattern
{
public:
typedef PMListPattern Base;
/**
* Creates a pigment list
*/
PMPigmentList( PMPart* part );
/**
* Copy constructor
*/
PMPigmentList( const PMPigmentList& l );
/**
* Deletes the pigment list
*/
virtual ~PMPigmentList( );
/** */
virtual PMObject* copy( ) const { return new PMPigmentList( *this ); }
/** */
virtual TQString description( ) const;
/** */
virtual TQString listObjectType( ) const { return TQString( "Pigment" ); }
/** */
virtual PMMetaObject* metaObject( ) const;
/** */
virtual void cleanUp( ) const;
/** */
virtual TQString pixmap( ) const { return TQString( "pmpigmentlist" ); }
static PMMetaObject* s_pMetaObject;
};
/**
* Class for color lists
*/
class PMColorList : public PMListPattern
{
public:
typedef PMListPattern Base;
/**
* Creates a color list
*/
PMColorList( PMPart* part );
/**
* Copy constructor
*/
PMColorList( const PMColorList& l );
/**
* Deletes the color list
*/
virtual ~PMColorList( );
/** */
virtual PMObject* copy( ) const { return new PMColorList( *this ); }
/** */
virtual TQString description( ) const;
/** */
virtual TQString listObjectType( ) const { return TQString( "SolidColor" ); }
/** */
virtual PMMetaObject* metaObject( ) const;
/** */
virtual void cleanUp( ) const;
/** */
virtual TQString pixmap( ) const { return TQString( "pmcolorlist" ); }
static PMMetaObject* s_pMetaObject;
};
/**
* Class for density lists
*/
class PMDensityList : public PMListPattern
{
public:
typedef PMListPattern Base;
/**
* Creates a density list
*/
PMDensityList( PMPart* part );
/**
* Copy constructor
*/
PMDensityList( const PMDensityList& l );
/**
* Deletes the density list
*/
virtual ~PMDensityList( );
/** */
virtual PMObject* copy( ) const { return new PMDensityList( *this ); }
/** */
virtual TQString description( ) const;
/** */
virtual TQString listObjectType( ) const { return TQString( "Density" ); }
/** */
virtual PMMetaObject* metaObject( ) const;
/** */
virtual void cleanUp( ) const;
/** */
virtual TQString pixmap( ) const { return TQString( "pmdensitylist" ); }
static PMMetaObject* s_pMetaObject;
};
/**
* Class for normal lists
*/
class PMNormalList : public PMListPattern
{
public:
typedef PMListPattern Base;
/**
* Creates a normal list
*/
PMNormalList( PMPart* part );
/**
* Copy constructor
*/
PMNormalList( const PMNormalList& l );
/**
* Deletes the normal list
*/
virtual ~PMNormalList( );
/** */
virtual PMObject* copy( ) const { return new PMNormalList( *this ); }
/** */
virtual TQString description( ) const;
/** */
virtual TQString listObjectType( ) const { return TQString( "Normal" ); }
/** */
virtual PMMetaObject* metaObject( ) const;
/** */
virtual void cleanUp( ) const;
/**
* Returns a new @ref PMListPatternEdit
*/
virtual PMDialogEditBase* editWidget( TQWidget* parent ) const;
/** */
virtual TQString pixmap( ) const { return TQString( "pmnormallist" ); }
/** */
virtual void serialize( TQDomElement& e, TQDomDocument& doc ) const;
/** */
virtual void readAttributes( const PMXMLHelper& h );
/** */
virtual void restoreMemento( PMMemento* s );
/**
* Returns the normal's depth
*/
double depth( ) const { return m_depth; }
/**
* Sets the normal's depth
*/
void setDepth( double d );
private:
/**
* IDs for @ref PMMementoData
*/
enum PMNormalListMementoID { PMDepthID };
/**
* Normal Depth
*/
double m_depth;
static PMMetaObject* s_pMetaObject;
};
#endif