diff options
Diffstat (limited to 'kpovmodeler/pmfinish.cpp')
-rw-r--r-- | kpovmodeler/pmfinish.cpp | 765 |
1 files changed, 765 insertions, 0 deletions
diff --git a/kpovmodeler/pmfinish.cpp b/kpovmodeler/pmfinish.cpp new file mode 100644 index 00000000..a98b9a2c --- /dev/null +++ b/kpovmodeler/pmfinish.cpp @@ -0,0 +1,765 @@ +/* +************************************************************************** + description + -------------------- + copyright : (C) 2001 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. * +* * +**************************************************************************/ + + +#include "pmfinish.h" +#include "pmxmlhelper.h" +#include "pmmemento.h" +#include "pmfinishedit.h" + +#include <klocale.h> + +const PMColor ambientColorDefault = PMColor( 0.0, 0.0, 0.0, 0.0, 0.0 ); +const double diffuseDefault = 0.6; +const double brillianceDefault = 1.0; +const double crandDefault = 0.0; +const double phongDefault = 0.0; +const double phongSizeDefault = 40.0; +const double metallicDefault = 1.0; +const double specularDefault = 0.0; +const double roughnessDefault = 0.05; +const double iridAmountDefault = 0.0; +const double iridThicknessDefault = 0.0; +const double iridTurbulenceDefault = 0.0; +const PMColor reflectionColorDefault = PMColor( 0.0, 0.0, 0.0, 0.0, 0.0 ); +const double reflectionFalloffDefault = 0.0; +const double reflectionExponentDefault = 1.0; +const double reflectionMetallicDefault = 1.0; + +PMDefinePropertyClass( PMFinish, PMFinishProperty ); + +PMMetaObject* PMFinish::s_pMetaObject = 0; +PMObject* createNewFinish( PMPart* part ) +{ + return new PMFinish( part ); +} + +PMFinish::PMFinish( PMPart* part ) + : Base( part ) +{ + m_ambientColor = ambientColorDefault; + m_diffuse = diffuseDefault; + m_brilliance = brillianceDefault; + m_crand = crandDefault; + m_conserveEnergy = false; + m_phong = phongDefault; + m_phongSize = phongSizeDefault; + m_metallic = metallicDefault; + m_specular = specularDefault; + m_roughness = roughnessDefault; + m_iridAmount = iridAmountDefault; + m_iridThickness = iridThicknessDefault; + m_iridTurbulence = iridTurbulenceDefault; + m_reflectionColor = reflectionColorDefault; + m_reflectionMinColor = reflectionColorDefault; + m_reflectionFresnel = false; + m_reflectionFalloff = reflectionFalloffDefault; + m_reflectionExponent = reflectionExponentDefault; + m_reflectionMetallic = reflectionMetallicDefault; + m_enableAmbient = false; + m_enableDiffuse = false; + m_enableBrilliance = false; + m_enableCrand = false; + m_enablePhong = false; + m_enablePhongSize = false; + m_enableMetallic = false; + m_enableSpecular = false; + m_enableRoughness = false; + m_enableReflection = false; + m_enableReflectionMin = false; + m_enableRefFalloff = false; + m_enableRefExponent = false; + m_enableRefMetallic = false; + m_irid = false; +} + +PMFinish::PMFinish( const PMFinish& f ) + : Base( f ) +{ + m_ambientColor = f.m_ambientColor; + m_diffuse = f.m_diffuse; + m_brilliance = f.m_brilliance; + m_crand = f.m_crand; + m_conserveEnergy = f.m_conserveEnergy; + m_phong = f.m_phong; + m_phongSize = f.m_phongSize; + m_metallic = f.m_metallic; + m_specular = f.m_specular; + m_roughness = f.m_roughness; + m_iridAmount = f.m_iridAmount; + m_iridThickness = f.m_iridThickness; + m_iridTurbulence = f.m_iridTurbulence; + m_reflectionColor = f.m_reflectionColor; + m_reflectionMinColor = f.m_reflectionMinColor; + m_reflectionFresnel = f.m_reflectionFresnel; + m_reflectionFalloff = f.m_reflectionFalloff; + m_reflectionExponent = f.m_reflectionExponent; + m_reflectionMetallic = f.m_reflectionMetallic; + m_enableAmbient = f.m_enableAmbient; + m_enableDiffuse = f.m_enableDiffuse; + m_enableBrilliance = f.m_enableBrilliance; + m_enableCrand = f.m_enableCrand; + m_enablePhong = f.m_enablePhong; + m_enablePhongSize = f.m_enablePhongSize; + m_enableMetallic = f.m_enableMetallic; + m_enableSpecular = f.m_enableSpecular; + m_enableRoughness = f.m_enableRoughness; + m_enableReflection = f.m_enableReflection; + m_enableReflectionMin = f.m_enableReflectionMin; + m_enableRefFalloff = f.m_enableRefFalloff; + m_enableRefExponent = f.m_enableRefExponent; + m_enableRefMetallic = f.m_enableRefMetallic; + m_irid = f.m_irid; +} + +PMFinish::~PMFinish( ) +{ +} + +PMMetaObject* PMFinish::metaObject( ) const +{ + if( !s_pMetaObject ) + { + s_pMetaObject = new PMMetaObject( "Finish", Base::metaObject( ), + createNewFinish ); + s_pMetaObject->addProperty( + new PMFinishProperty( "ambientColor", &PMFinish::setAmbientColor, &PMFinish::ambientColor ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "phong", &PMFinish::setPhong, &PMFinish::phong ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "diffuse", &PMFinish::setDiffuse, &PMFinish::diffuse ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "brilliance", &PMFinish::setBrilliance, &PMFinish::brilliance ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "crand", &PMFinish::setCrand, &PMFinish::crand ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "conserveEnergy", &PMFinish::setConserveEnergy, &PMFinish::conserveEnergy ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "specular", &PMFinish::setSpecular, &PMFinish::specular ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "roughness", &PMFinish::setRoughness, &PMFinish::roughness ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "metallic", &PMFinish::setMetallic, &PMFinish::metallic ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "irid", &PMFinish::setIrid, &PMFinish::irid ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "iridAmount", &PMFinish::setIridAmount, &PMFinish::iridAmount ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "iridThickness", &PMFinish::setIridThickness, &PMFinish::iridThickness ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "reflectionColor", &PMFinish::setReflectionColor, &PMFinish::reflectionColor ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "reflectionMinColor", &PMFinish::setReflectionMinColor, &PMFinish::reflectionMinColor ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "reflectionFresnel", &PMFinish::setReflectionFresnel, &PMFinish::reflectionFresnel ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "reflectionFalloff", &PMFinish::setReflectionFalloff, &PMFinish::reflectionFalloff ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "reflectionExponent", &PMFinish::setReflectionExponent, &PMFinish::reflectionExponent ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "reflectionMetallic", &PMFinish::setReflectionMetallic, &PMFinish::reflectionMetallic ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "ambientEnabled", &PMFinish::enableAmbient, &PMFinish::isAmbientEnabled ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "phongEnabled", &PMFinish::enablePhong, &PMFinish::isPhongEnabled ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "phongSizeEnabled", &PMFinish::enablePhongSize, &PMFinish::isPhongSizeEnabled ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "diffuseEnabled", &PMFinish::enableDiffuse, &PMFinish::isDiffuseEnabled ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "brillianceEnabled", &PMFinish::enableBrilliance, &PMFinish::isBrillianceEnabled ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "crandEnabled", &PMFinish::enableCrand, &PMFinish::isCrandEnabled ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "specularEnabled", &PMFinish::enableSpecular, &PMFinish::isSpecularEnabled ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "roughnessEnabled", &PMFinish::enableRoughness, &PMFinish::isRoughnessEnabled ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "metallicEnabled", &PMFinish::enableMetallic, &PMFinish::isMetallicEnabled ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "reflectionEnabled", &PMFinish::enableReflection, &PMFinish::isReflectionEnabled ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "reflectionMinEnabled", &PMFinish::enableReflectionMin, &PMFinish::isReflectionMinEnabled ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "refFalloffEnabled", &PMFinish::enableRefFalloff, &PMFinish::isRefFalloffEnabled ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "refExponentEnabled", &PMFinish::enableRefExponent, &PMFinish::isRefExponentEnabled ) ); + s_pMetaObject->addProperty( + new PMFinishProperty( "refMetallicEnabled", &PMFinish::enableRefMetallic, &PMFinish::isRefMetallicEnabled ) ); + } + return s_pMetaObject; +} + +void PMFinish::cleanUp( ) const +{ + if( s_pMetaObject ) + { + delete s_pMetaObject; + s_pMetaObject = 0; + } + Base::cleanUp( ); +} + +QString PMFinish::description( ) const +{ + return i18n( "finish" ); +} + +void PMFinish::serialize( QDomElement& e, QDomDocument& doc ) const +{ + Base::serialize( e, doc ); + e.setAttribute( "enable_ambient", m_enableAmbient ); + e.setAttribute( "enable_diffuse", m_enableDiffuse ); + e.setAttribute( "enable_brilliance", m_enableBrilliance ); + e.setAttribute( "enable_crand", m_enableCrand ); + e.setAttribute( "enable_phong", m_enablePhong ); + e.setAttribute( "enable_phong_size", m_enablePhongSize ); + e.setAttribute( "enable_metallic", m_enableMetallic ); + e.setAttribute( "enable_specular", m_enableSpecular ); + e.setAttribute( "enable_roughness", m_enableRoughness ); + e.setAttribute( "enable_reflection", m_enableReflection ); + e.setAttribute( "enable_reflection_min", m_enableReflectionMin ); + e.setAttribute( "enable_reflection_falloff", m_enableRefFalloff ); + e.setAttribute( "enable_reflection_exponent", m_enableRefExponent ); + e.setAttribute( "enable_reflection_metallic", m_enableRefMetallic ); + e.setAttribute( "ambient", m_ambientColor.serializeXML( ) ); + e.setAttribute( "diffuse", m_diffuse ); + e.setAttribute( "brilliance", m_brilliance ); + e.setAttribute( "crand", m_crand ); + e.setAttribute( "conserve_energy", m_conserveEnergy ); + e.setAttribute( "phong", m_phong ); + e.setAttribute( "phongsize", m_phongSize ); + e.setAttribute( "metallic", m_metallic ); + e.setAttribute( "specular", m_specular ); + e.setAttribute( "roughness", m_roughness ); + e.setAttribute( "irid", m_irid ); + e.setAttribute( "irid_amount", m_iridAmount ); + e.setAttribute( "irid_thickness", m_iridThickness ); + e.setAttribute( "irid_turbulence", m_iridTurbulence ); + e.setAttribute( "reflection", m_reflectionColor.serializeXML( ) ); + e.setAttribute( "reflection_min", m_reflectionMinColor.serializeXML( ) ); + e.setAttribute( "reflection_fresnel", m_reflectionFresnel ); + e.setAttribute( "reflection_falloff", m_reflectionFalloff ); + e.setAttribute( "reflection_exponent", m_reflectionExponent ); + e.setAttribute( "reflection_metallic", m_reflectionMetallic ); +} + +void PMFinish::readAttributes( const PMXMLHelper& h ) +{ + Base::readAttributes( h ); + m_enableAmbient = h.boolAttribute( "enable_ambient", false ); + m_enableDiffuse = h.boolAttribute( "enable_diffuse", false ); + m_enableBrilliance = h.boolAttribute( "enable_brilliance", false ); + m_enableCrand = h.boolAttribute( "enable_crand", false ); + m_enablePhong = h.boolAttribute( "enable_phong", false ); + m_enablePhongSize = h.boolAttribute( "enable_phong_size", false ); + m_enableMetallic = h.boolAttribute( "enable_metallic", false ); + m_enableSpecular = h.boolAttribute( "enable_specular", false ); + m_enableRoughness = h.boolAttribute( "enable_roughness", false ); + m_enableReflection = h.boolAttribute( "enable_reflection", false ); + m_enableReflectionMin = h.boolAttribute( "enable_reflection_min", false ); + m_enableRefFalloff = h.boolAttribute( "enable_reflection_falloff", false ); + m_enableRefExponent = h.boolAttribute( "enable_reflection_exponent", false ); + m_enableRefMetallic = h.boolAttribute( "enable_reflection_metallic", false ); + m_irid = h.boolAttribute( "irid", false ); + m_ambientColor = h.colorAttribute( "ambient", ambientColorDefault ); + m_diffuse = h.doubleAttribute( "diffuse", diffuseDefault ); + m_brilliance = h.doubleAttribute( "brilliance", crandDefault ); + m_crand = h.doubleAttribute( "crand", crandDefault ); + m_conserveEnergy = h.boolAttribute( "conserve_energy", false ); + m_phong = h.doubleAttribute( "phong", phongDefault ); + m_phongSize = h.doubleAttribute( "phongsize", phongSizeDefault ); + m_metallic = h.doubleAttribute( "metallic", metallicDefault ); + m_specular = h.doubleAttribute( "specular", specularDefault ); + m_roughness = h.doubleAttribute( "roughness", roughnessDefault ); + m_iridAmount = h.doubleAttribute( "irid_amount", iridAmountDefault ); + m_iridThickness = h.doubleAttribute( "irid_thickness", iridThicknessDefault ); + m_iridTurbulence = h.doubleAttribute( "irid_turbulence", iridTurbulenceDefault ); + m_reflectionColor = h.colorAttribute( "reflection", reflectionColorDefault ); + m_reflectionMinColor = h.colorAttribute( "reflection_min", reflectionColorDefault ); + m_reflectionFresnel = h.boolAttribute( "reflection_fresnel", false ); + m_reflectionFalloff = h.doubleAttribute( "reflection_falloff", reflectionFalloffDefault ); + m_reflectionExponent = h.doubleAttribute( "reflection_exponent", reflectionExponentDefault ); + m_reflectionMetallic = h.doubleAttribute( "reflection_metallic", reflectionMetallicDefault ); +} + +void PMFinish::setPhong( double c ) +{ + if( c != m_phong ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMPhongID, m_phong ); + m_phong = c; + } +} + +void PMFinish::setPhongSize( double c ) +{ + if( c != m_phongSize ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMPhongSizeID, m_phongSize ); + m_phongSize = c; + } +} + +void PMFinish::setMetallic( double c ) +{ + if( c != m_metallic ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMMetallicID, m_metallic ); + m_metallic = c; + } +} + +void PMFinish::setAmbientColor( const PMColor& c ) +{ + if( c != m_ambientColor ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMAmbientColorID, m_ambientColor ); + m_ambientColor = c; + } +} + +void PMFinish::setDiffuse( double c ) +{ + if( c != m_diffuse ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMDiffuseID, m_diffuse ); + m_diffuse = c; + } +} + +void PMFinish::setBrilliance( double c ) +{ + if( c != m_brilliance ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMBrillianceID, m_brilliance ); + m_brilliance = c; + } +} + +void PMFinish::setCrand( double c ) +{ + if( c != m_crand ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMCrandID, m_crand ); + m_crand = c; + } +} + +void PMFinish::setConserveEnergy( bool c ) +{ + if( c != m_conserveEnergy ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMConserveEnergyID, m_conserveEnergy ); + m_conserveEnergy = c; + } +} + +void PMFinish::setSpecular( double c ) +{ + if( c != m_specular ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMSpecularID, m_specular ); + m_specular = c; + } +} + +void PMFinish::setRoughness( double c ) +{ + if( c != m_roughness ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMRoughnessID, m_roughness ); + m_roughness = c; + } +} + +void PMFinish::setIrid( bool c ) +{ + if( c != m_irid ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMIridID, m_irid ); + m_irid = c; + } +} + +void PMFinish::setReflectionColor( const PMColor& c ) +{ + if( c != m_reflectionColor ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMReflectionColorID, m_reflectionColor ); + m_reflectionColor = c; + } +} + +void PMFinish::setReflectionMinColor( const PMColor& c ) +{ + if( c != m_reflectionMinColor ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMReflectionMinColorID, m_reflectionMinColor ); + m_reflectionMinColor = c; + } +} + +void PMFinish::setReflectionFresnel( bool c ) +{ + if( c != m_reflectionFresnel ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMReflectionFresnelID, m_reflectionFresnel ); + m_reflectionFresnel = c; + } +} + +void PMFinish::setReflectionFalloff( double c ) +{ + if( c != m_reflectionFalloff ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMReflectionFalloffID, m_reflectionFalloff ); + m_reflectionFalloff = c; + } +} + +void PMFinish::setReflectionExponent( double c ) +{ + if( c != m_reflectionExponent ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMReflectionExponentID, m_reflectionExponent ); + m_reflectionExponent = c; + } +} + +void PMFinish::setReflectionMetallic( double c ) +{ + if( c != m_reflectionMetallic ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMReflectionMetallicID, m_reflectionMetallic ); + m_reflectionMetallic = c; + } +} + +void PMFinish::enableAmbient( bool c ) +{ + if( c != m_enableAmbient ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMEnableAmbientID, m_enableAmbient ); + m_enableAmbient = c; + } +} + +void PMFinish::enableDiffuse( bool c ) +{ + if( c != m_enableDiffuse ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMEnableDiffuseID, m_enableDiffuse ); + m_enableDiffuse = c; + } +} + +void PMFinish::enablePhong( bool c ) +{ + if( c != m_enablePhong ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMEnablePhongID, m_enablePhong ); + m_enablePhong = c; + } +} + +void PMFinish::enablePhongSize( bool c ) +{ + if( c != m_enablePhongSize ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMEnablePhongSizeID, m_enablePhongSize ); + m_enablePhongSize = c; + } +} + +void PMFinish::enableBrilliance( bool c ) +{ + if( c != m_enableBrilliance ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMEnableBrillianceID, m_enableBrilliance ); + m_enableBrilliance = c; + } +} + +void PMFinish::enableCrand( bool c ) +{ + if( c != m_enableCrand ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMEnableCrandID, m_enableCrand ); + m_enableCrand = c; + } +} + +void PMFinish::enableSpecular( bool c ) +{ + if( c != m_enableSpecular ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMEnableSpecularID, m_enableSpecular ); + m_enableSpecular = c; + } +} + +void PMFinish::enableRoughness( bool c ) +{ + if( c != m_enableRoughness ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMEnableRoughnessID, m_enableRoughness ); + m_enableRoughness = c; + } +} + +void PMFinish::enableMetallic( bool c ) +{ + if( c != m_enableMetallic ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMEnableMetallicID, m_enableMetallic ); + m_enableMetallic = c; + } +} + +void PMFinish::enableReflection( bool c ) +{ + if( c != m_enableReflection ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMEnableReflectionID, m_enableReflection ); + m_enableReflection = c; + } +} + +void PMFinish::enableReflectionMin( bool c ) +{ + if( c != m_enableReflectionMin ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMEnableReflectionMinID, m_enableReflectionMin ); + m_enableReflectionMin = c; + } +} + +void PMFinish::enableRefFalloff( bool c ) +{ + if( c != m_enableRefFalloff ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMEnableRefFalloffID, m_enableRefFalloff ); + m_enableRefFalloff = c; + } +} + +void PMFinish::enableRefExponent( bool c ) +{ + if( c != m_enableRefExponent ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMEnableRefExponentID, m_enableRefExponent ); + m_enableRefExponent = c; + } +} + +void PMFinish::enableRefMetallic( bool c ) +{ + if( c != m_enableRefMetallic ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMEnableRefMetallicID, m_enableRefMetallic ); + m_enableRefMetallic = c; + } +} + +void PMFinish::setIridAmount( double c ) +{ + if( c != m_iridAmount ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMIridAmountID, m_iridAmount ); + m_iridAmount = c; + } +} + +void PMFinish::setIridThickness( double c ) +{ + if( c != m_iridThickness ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMIridThicknessID, m_iridThickness ); + m_iridThickness = c; + } +} + +void PMFinish::setIridTurbulence( double c ) +{ + if( c != m_iridTurbulence ) + { + if( m_pMemento ) + m_pMemento->addData( s_pMetaObject, PMIridTurbulenceID, m_iridTurbulence ); + m_iridTurbulence = c; + } +} + +PMDialogEditBase* PMFinish::editWidget( QWidget* parent ) const +{ + return new PMFinishEdit( parent ); +} + +void PMFinish::restoreMemento( PMMemento* s ) +{ + PMMementoDataIterator it( s ); + PMMementoData* data; + + for( ; it.current( ); ++it ) + { + data = it.current( ); + if( data->objectType( ) == s_pMetaObject ) + { + switch( data->valueID( ) ) + { + case PMAmbientColorID: + setAmbientColor( data->colorData( ) ); + break; + case PMDiffuseID: + setDiffuse( data->doubleData( ) ); + break; + case PMBrillianceID: + setBrilliance( data->doubleData( ) ); + break; + case PMCrandID: + setCrand( data->doubleData( ) ); + break; + case PMConserveEnergyID: + setConserveEnergy( data->boolData( ) ); + case PMPhongID: + setPhong( data->doubleData( ) ); + break; + case PMPhongSizeID: + setPhongSize( data->doubleData( ) ); + break; + case PMMetallicID: + setMetallic( data->doubleData( ) ); + break; + case PMSpecularID: + setSpecular( data->doubleData( ) ); + break; + case PMRoughnessID: + setRoughness( data->doubleData( ) ); + break; + case PMIridID: + setIrid( data->boolData( ) ); + break; + case PMIridAmountID: + setIridAmount( data->doubleData( ) ); + break; + case PMIridThicknessID: + setIridThickness( data->doubleData( ) ); + break; + case PMIridTurbulenceID: + setIridTurbulence( data->doubleData( ) ); + break; + case PMReflectionColorID: + setReflectionColor( data->colorData( ) ); + break; + case PMReflectionMinColorID: + setReflectionMinColor( data->colorData( ) ); + break; + case PMReflectionFresnelID: + setReflectionFresnel( data->boolData( ) ); + break; + case PMReflectionFalloffID: + setReflectionFalloff( data->doubleData( ) ); + break; + case PMReflectionExponentID: + setReflectionExponent( data->doubleData( ) ); + break; + case PMReflectionMetallicID: + setReflectionMetallic( data->doubleData( ) ); + break; + case PMEnableAmbientID: + enableAmbient( data->boolData( ) ); + break; + case PMEnablePhongID: + enablePhong( data->boolData( ) ); + break; + case PMEnablePhongSizeID: + enablePhongSize( data->boolData( ) ); + break; + case PMEnableDiffuseID: + enableDiffuse( data->boolData( ) ); + break; + case PMEnableBrillianceID: + enableBrilliance( data->boolData( ) ); + break; + case PMEnableCrandID: + enableCrand( data->boolData( ) ); + break; + case PMEnableSpecularID: + enableSpecular( data->boolData( ) ); + break; + case PMEnableRoughnessID: + enableRoughness( data->boolData( ) ); + break; + case PMEnableMetallicID: + enableMetallic( data->boolData( ) ); + break; + case PMEnableReflectionID: + enableReflection( data->boolData( ) ); + break; + case PMEnableReflectionMinID: + enableReflectionMin( data->boolData( ) ); + break; + case PMEnableRefFalloffID: + enableRefFalloff( data->boolData( ) ); + break; + case PMEnableRefExponentID: + enableRefExponent( data->boolData( ) ); + break; + case PMEnableRefMetallicID: + enableRefMetallic( data->boolData( ) ); + break; + default: + kdError( PMArea ) << "Wrong ID in PMFinish::restoreMemento\n"; + break; + } + } + } + Base::restoreMemento( s ); +} |