/* ************************************************************************** description -------------------- copyright : (C) 2001 by Andreas Zehender email : zehender@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. * * * **************************************************************************/ #include "pmrendermode.h" #include #include "pmxmlhelper.h" PMRenderMode::PMRenderMode( ) { init( ); } void PMRenderMode::init( ) { m_width = 640; m_height = 480; m_subSection = false; m_startRow = 1; m_endRow = m_height; m_startColumn = 1; m_endColumn = m_width; m_quality = 9; m_radiosity = false; m_antialiasing = false; m_samplingMethod = AntialiasingNonRecursive; m_antialiasThreshold = 0.3; m_antialiasJitter = false; m_antialiasJitterAmount = 1.0; m_antialiasDepth = 2; m_description = i18n( "New mode" ); m_alpha = false; } PMRenderMode::PMRenderMode( const TQDomElement& e ) { init( ); PMXMLHelper hlp( e, 0, 0, 0, 0 ); m_description = hlp.stringAttribute( "description", m_description ); m_height = hlp.intAttribute( "height", m_height ); m_width = hlp.intAttribute( "width", m_width ); m_subSection = hlp.boolAttribute( "subsection", m_subSection ); m_startColumn = hlp.doubleAttribute( "start_column", m_startColumn ); m_endColumn = hlp.doubleAttribute( "end_column", m_endColumn ); m_startRow = hlp.doubleAttribute( "start_row", m_startRow ); m_endRow = hlp.doubleAttribute( "end_row", m_endRow ); m_quality = hlp.intAttribute( "quality", m_quality ); m_radiosity = hlp.boolAttribute( "radiosity", m_radiosity ); m_antialiasing = hlp.boolAttribute( "antialiasing", m_antialiasing ); m_samplingMethod = hlp.intAttribute( "sampling_method", m_samplingMethod ); m_antialiasThreshold = hlp.doubleAttribute( "aa_threshold", m_antialiasThreshold ); m_antialiasJitter = hlp.boolAttribute( "aa_jitter", m_antialiasJitter ); m_antialiasJitterAmount = hlp.doubleAttribute( "aa_jitter_amount", m_antialiasJitterAmount ); m_antialiasDepth = hlp.intAttribute( "aa_depth", m_antialiasDepth ); m_alpha = hlp.boolAttribute( "alpha", m_alpha ); } void PMRenderMode::serialize( TQDomElement& e ) const { e.setAttribute( "description", m_description ); e.setAttribute( "height", m_height ); e.setAttribute( "width", m_width ); e.setAttribute( "subsection", m_subSection ); e.setAttribute( "start_row", m_startRow ); e.setAttribute( "end_row", m_endRow ); e.setAttribute( "start_column", m_startColumn ); e.setAttribute( "end_column", m_endColumn ); e.setAttribute( "quality", m_quality ); e.setAttribute( "radiosity", m_radiosity ); e.setAttribute( "antialiasing", m_antialiasing ); e.setAttribute( "sampling_method", m_samplingMethod ); e.setAttribute( "aa_threshold", m_antialiasThreshold ); e.setAttribute( "aa_jitter", m_antialiasJitter ); e.setAttribute( "aa_jitter_amount", m_antialiasJitterAmount ); e.setAttribute( "aa_depth", m_antialiasDepth ); e.setAttribute( "alpha", m_alpha ); } void PMRenderMode::setHeight( int height ) { if( height >= 1 ) m_height = height; } void PMRenderMode::setWidth( int width ) { if( width >= 1 ) m_width = width; } void PMRenderMode::setStartRow( double startRow ) { if( startRow >= 0 ) m_startRow = startRow; } void PMRenderMode::setEndRow( double endRow ) { if( endRow >= 0 ) m_endRow = endRow; } void PMRenderMode::setStartColumn( double startColumn ) { if( startColumn >= 0 ) m_startColumn = startColumn; } void PMRenderMode::setEndColumn( double endColumn ) { if( endColumn >= 0 ) m_endColumn = endColumn; } void PMRenderMode::setQuality( int quality ) { if( ( quality >= 0 ) && ( quality <= 11 ) ) m_quality = quality; } void PMRenderMode::setAntialiasingDepth( int depth ) { if( ( depth >= 1 ) && ( depth <= 9 ) ) m_antialiasDepth = depth; } void PMRenderMode::setSamplingMethod( int method ) { if( ( method == AntialiasingNonRecursive ) || ( method == AntialiasingRecursive ) ) m_samplingMethod = method; else m_samplingMethod = AntialiasingNonRecursive; } TQStringList PMRenderMode::commandLineSwitches( ) const { TQStringList cl; TQString tmp; cl.append( TQString( "+W%1" ).arg( m_width ) ); cl.append( TQString( "+H%1" ).arg( m_height ) ); if( m_subSection ) { if( m_startRow < 1.0 ) tmp.sprintf( "+SR%4.2f", m_startRow ); else tmp = TQString( "+SR%1" ).arg( ( int ) ( m_startRow + 0.5 ) ); cl.append( tmp ); if( m_endRow < 1.0 ) tmp.sprintf( "+ER%4.2f", m_endRow ); else tmp = TQString( "+ER%1" ).arg( ( int ) ( m_endRow + 0.5 ) ); cl.append( tmp ); if( m_startColumn < 1.0 ) tmp.sprintf( "+SC%4.2f", m_startColumn ); else tmp = TQString( "+SC%1" ).arg( ( int ) ( m_startColumn + 0.5 ) ); cl.append( tmp ); if( m_endColumn < 1.0 ) tmp.sprintf( "+EC%4.2f", m_endColumn ); else tmp = TQString( "+EC%1" ).arg( ( int ) ( m_endColumn + 0.5 ) ); cl.append( tmp ); } cl.append( TQString( "+Q%1" ).arg( m_quality ) ); if( m_radiosity ) cl.append( TQString( "+QR" ) ); else cl.append( TQString( "-QR" ) ); if( m_antialiasing ) { cl.append( TQString( "+A" ) ); cl.append( TQString( "+AM%1" ).arg( m_samplingMethod ) ); tmp.sprintf( "+A%5.3f", m_antialiasThreshold ); cl.append( tmp ); if( m_antialiasJitter ) { tmp.sprintf( "+J%5.3f", m_antialiasJitterAmount ); cl.append( tmp ); } else cl.append( TQString( "-J" ) ); cl.append( TQString( "+R%1" ).arg( m_antialiasDepth ) ); } else cl.append( TQString( "-A" ) ); if( m_alpha ) cl.append( TQString( "+UA" ) ); else cl.append( TQString( "-UA" ) ); return cl; }