⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dscparse_adapter.cpp.svn-base

📁 okular
💻 SVN-BASE
字号:
/**  * Copyright (C) 2001 the KGhostView authors. See file GVAUTHORS. * 	 * 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 Steet, Fifth Floor, Boston, MA  02110-1301, USA. */#include "dscparse_adapter.h"using namespace std;/*-- KDSCBBOX implementation -----------------------------------------------*/KDSCBBOX::KDSCBBOX() :    _llx( 0 ), _lly( 0 ),    _urx( 0 ), _ury( 0 ){}KDSCBBOX::KDSCBBOX( const KDSCBBOX& b ) :    _llx( b._llx ), _lly( b._lly ),    _urx( b._urx ), _ury( b._ury ){}KDSCBBOX::KDSCBBOX( int llx, int lly, int urx, int ury ) :    _llx( llx ), _lly( lly ),     _urx( urx ), _ury( ury ) {}KDSCBBOX::KDSCBBOX( const CDSCBBOX& bbox ) :    _llx( bbox.llx ), _lly( bbox.lly ),     _urx( bbox.urx ), _ury( bbox.ury ) {}KDSCBBOX& KDSCBBOX::operator = ( const KDSCBBOX& b ) {     _llx = b._llx; _lly = b._lly; _urx = b._urx; _ury = b._ury;    return *this; }bool KDSCBBOX::operator == ( const KDSCBBOX& b ) {     return ( _llx == b._llx && _lly == b._lly 	  && _urx == b._urx && _ury == b._ury ); }bool KDSCBBOX::operator != ( const KDSCBBOX& b ) {     return !( *this == b ); }int KDSCBBOX::llx() const { return _llx; }int KDSCBBOX::lly() const { return _lly; }int KDSCBBOX::urx() const { return _urx; }int KDSCBBOX::ury() const { return _ury; }int KDSCBBOX::width()  const { return _urx - _llx; }int KDSCBBOX::height() const { return _ury - _lly; }QSize KDSCBBOX::size() const { return QSize( width(), height() ); }ostream& operator << ( ostream& os, const KDSCBBOX& source ){    os << "{ llx: "<< source.llx() << ", lly: " << source.lly()       <<  " urx: "<< source.urx() << ", ury: " << source.ury() << " }";    return os;}/*-- KDSCError implementation ----------------------------------------------*/KDSCError::KDSCError( Type type, Severity severity, const QByteArray& line,	              unsigned int lineNumber ) :    _type( type ),    _severity( severity ),    _line( line ),    _lineNumber( lineNumber ){}KDSCError::Type KDSCError::type() const{    return _type;}KDSCError::Severity KDSCError::severity() const{    return _severity; }QByteArray KDSCError::line() const{    return _line; }unsigned int KDSCError::lineNumber() const{    return _lineNumber; }/*-- KDSCOkErrorHandler implementation -------------------------------------*/KDSCErrorHandler::Response KDSCOkErrorHandler::error( const KDSCError& err ) {    cout << "KDSC: error in line " << err.lineNumber() << endl;    cout << err.line().constData() << endl;    return Ok;}/*-- KDSC implementation ---------------------------------------------------*/KDSC::KDSC() :    _errorHandler( 0 ),    _commentHandler( 0 ){    _cdsc = dsc_init( this );    Q_ASSERT( _cdsc != 0 );    _scanHandler = new KDSCScanHandler( _cdsc );}KDSC::~KDSC(){    dsc_free( _cdsc );    delete _scanHandler;}QString KDSC::dsc_version() const{    return QString( _cdsc->dsc_version );}QString KDSC::dsc_copyright() const{    return QString( _cdsc->dsc_copyright );}bool KDSC::dsc() const{    return ( _cdsc->dsc == TRUE );}bool KDSC::ctrld() const{    return ( _cdsc->ctrld == TRUE );}bool KDSC::pjl() const{    return ( _cdsc->pjl == TRUE );}bool KDSC::epsf() const{    return ( _cdsc->epsf == TRUE );}bool KDSC::pdf() const{    return ( _cdsc->pdf == TRUE );}unsigned int KDSC::preview() const{    return _cdsc->preview;}unsigned int KDSC::language_level() const{    return _cdsc->language_level;}unsigned int KDSC::document_data() const{    return _cdsc->document_data;}unsigned long KDSC::begincomments() const{    return _cdsc->begincomments;}unsigned long KDSC::endcomments() const{    return _cdsc->endcomments;}unsigned long KDSC::beginpreview() const{    return _cdsc->beginpreview;}unsigned long KDSC::endpreview() const{    return _cdsc->endpreview;}unsigned long KDSC::begindefaults() const{    return _cdsc->begindefaults;}unsigned long KDSC::enddefaults() const{    return _cdsc->enddefaults;}unsigned long KDSC::beginprolog() const{    return _cdsc->beginprolog;}unsigned long KDSC::endprolog() const{    return _cdsc->endprolog;}unsigned long KDSC::beginsetup() const{    return _cdsc->beginsetup;}unsigned long KDSC::endsetup() const{    return _cdsc->endsetup;}unsigned long KDSC::begintrailer() const{    return _cdsc->begintrailer;}unsigned long KDSC::endtrailer() const{    return _cdsc->endtrailer;}CDSCPAGE* KDSC::page() const{    return _cdsc->page;}unsigned int KDSC::page_count() const{    return _cdsc->page_count;}unsigned int KDSC::page_pages() const{    return _cdsc->page_pages;}unsigned int KDSC::page_order() const{    return _cdsc->page_order;}unsigned int KDSC::page_orientation() const{    return _cdsc->page_orientation;}CDSCCTM* KDSC::viewing_orientation() const{    return _cdsc->viewing_orientation;}unsigned int KDSC::media_count() const{    return _cdsc->media_count;}CDSCMEDIA** KDSC::media() const{    return _cdsc->media;}const CDSCMEDIA* KDSC::page_media() const{    return _cdsc->page_media;}auto_ptr<KDSCBBOX> KDSC::bbox() const{    if( _cdsc->bbox == 0 )	return auto_ptr<KDSCBBOX>( 0 );    else	return auto_ptr<KDSCBBOX>( new KDSCBBOX( *_cdsc->bbox ) );}auto_ptr<KDSCBBOX> KDSC::page_bbox() const{    if( _cdsc->page_bbox == 0 )	return auto_ptr<KDSCBBOX>( 0 );    else	return auto_ptr<KDSCBBOX>( new KDSCBBOX( *_cdsc->page_bbox ) );}QString KDSC::dsc_title() const{    return QString( _cdsc->dsc_title );}QString KDSC::dsc_creator() const{    return QString( _cdsc->dsc_creator );}QString KDSC::dsc_date() const{    return QString( _cdsc->dsc_date );}QString KDSC::dsc_for() const{    return QString( _cdsc->dsc_for );}bool KDSC::scanData( char* buffer, unsigned int count ){    return _scanHandler->scanData( buffer, count );}int KDSC::fixup(){    return dsc_fixup( _cdsc );}KDSCErrorHandler* KDSC::errorHandler() const{    return _errorHandler;}void KDSC::setErrorHandler( KDSCErrorHandler* errorHandler ){    _errorHandler = errorHandler;    if( errorHandler == 0 )	dsc_set_error_function( _cdsc, 0 );    else	dsc_set_error_function( _cdsc, &errorFunction );}KDSCCommentHandler* KDSC::commentHandler() const{    return _commentHandler;}void KDSC::setCommentHandler( KDSCCommentHandler* commentHandler ){    if( _commentHandler != 0 && commentHandler == 0 )    {	delete _scanHandler;	_scanHandler = new KDSCScanHandler( _cdsc );    }    else if( _commentHandler == 0 && commentHandler != 0 )    {	delete _scanHandler;	_scanHandler = new KDSCScanHandlerByLine( _cdsc, commentHandler );    }    _commentHandler = commentHandler;}bool KDSC::isStructured() const {    return epsf() ? ( page_count() > 1 ) : ( page_count() > 0 );}CDSC* KDSC::cdsc() const{    return _cdsc;}int KDSC::errorFunction( void* caller_data, CDSC* dsc,	unsigned int explanation, const char* line, unsigned int line_len ){    KDSCError error( 	    static_cast< KDSCError::Type >( explanation ), 	    static_cast< KDSCError::Severity >( dsc->severity[explanation] ),	    QByteArray( line, line_len + 1 ),	    dsc->line_count    );        KDSC* kdsc = static_cast< KDSC* >( caller_data );    Q_ASSERT( kdsc );        return kdsc->errorHandler()->error( error );}bool KDSCScanHandlerByLine::scanData( char* buf, unsigned int count ){    char* lineStart = buf;    char* it = buf;    while( it < buf + count )    {	if( *it++ == '\n' )	{	    int retval = dsc_scan_data( _cdsc, lineStart, it - lineStart );	    if( retval < 0 ) 		return false;	    else if( retval > 0 )	    {		_commentHandler->comment( 			static_cast<KDSCCommentHandler::Name>( retval ) );	    }	    lineStart = it;	}    }      if( it != lineStart )    {	// Scan the remaining part of the string.	return ( dsc_scan_data( _cdsc, lineStart, it - lineStart ) < 0 );    }    else	return true;}// vim:sw=4:sts=4:ts=8:noet

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -