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.
169 lines
4.2 KiB
169 lines
4.2 KiB
15 years ago
|
/*
|
||
|
* khexedit - Versatile hex editor
|
||
|
* Copyright (C) 1999 Espen Sand, espensa@online.no
|
||
|
*
|
||
|
* 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.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
|
||
|
#include "hexprinter.h"
|
||
|
|
||
|
|
||
|
CHexPrinter::CHexPrinter( void )
|
||
|
: KPrinter()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
|
||
|
void CHexPrinter::setPageMarginMM( uint top, uint bottom, int right, int left )
|
||
|
{
|
||
|
mPageMargin.top = top;
|
||
|
mPageMargin.left = left;
|
||
|
mPageMargin.bottom = bottom;
|
||
|
mPageMargin.right = right;
|
||
|
}
|
||
|
|
||
|
void CHexPrinter::setTopMarginMM( uint value )
|
||
|
{
|
||
|
mPageMargin.top = value;
|
||
|
}
|
||
|
|
||
|
void CHexPrinter::setLeftMarginMM( uint value )
|
||
|
{
|
||
|
mPageMargin.left = value;
|
||
|
}
|
||
|
|
||
|
void CHexPrinter::setBottomMarginMM( uint value )
|
||
|
{
|
||
|
mPageMargin.bottom = value;
|
||
|
}
|
||
|
|
||
|
void CHexPrinter::setRightMarginMM( uint value )
|
||
|
{
|
||
|
mPageMargin.right = value;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void CHexPrinter::setPageHeader( bool enable, uint left, uint center,
|
||
|
uint right, uint line )
|
||
|
{
|
||
|
if( left > SPageHeader::FileName ) { left = SPageHeader::NoString; }
|
||
|
if( center > SPageHeader::FileName ) { center = SPageHeader::NoString; }
|
||
|
if( right > SPageHeader::FileName ) { right = SPageHeader::NoString; }
|
||
|
if( line > SPageHeader::Rectangle ) { line = SPageHeader::NoLine; }
|
||
|
|
||
|
mHeader.enable = enable;
|
||
|
mHeader.pos[0] = (SPageHeader::EHeaderString)left;
|
||
|
mHeader.pos[1] = (SPageHeader::EHeaderString)center;
|
||
|
mHeader.pos[2] = (SPageHeader::EHeaderString)right;
|
||
|
mHeader.line = (SPageHeader::EHeaderLine)line;
|
||
|
|
||
|
if( mHeader.pos[0] == SPageHeader::NoString &&
|
||
|
mHeader.pos[1] == SPageHeader::NoString &&
|
||
|
mHeader.pos[2] == SPageHeader::NoString &&
|
||
|
mHeader.line == SPageHeader::NoLine )
|
||
|
{
|
||
|
mHeader.enable = false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void CHexPrinter::setPageFooter( bool enable, uint left, uint center,
|
||
|
uint right, uint line )
|
||
|
{
|
||
|
if( left > SPageHeader::FileName ) { left = SPageHeader::NoString; }
|
||
|
if( center > SPageHeader::FileName ) { center = SPageHeader::NoString; }
|
||
|
if( right > SPageHeader::FileName ) { right = SPageHeader::NoString; }
|
||
|
if( line > SPageHeader::Rectangle ) { line = SPageHeader::NoLine; }
|
||
|
|
||
|
mFooter.enable = enable;
|
||
|
mFooter.pos[0] = (SPageHeader::EHeaderString)left;
|
||
|
mFooter.pos[1] = (SPageHeader::EHeaderString)center;
|
||
|
mFooter.pos[2] = (SPageHeader::EHeaderString)right;
|
||
|
mFooter.line = (SPageHeader::EHeaderLine)line;
|
||
|
|
||
|
if( mFooter.pos[0] == SPageHeader::NoString &&
|
||
|
mFooter.pos[1] == SPageHeader::NoString &&
|
||
|
mFooter.pos[2] == SPageHeader::NoString &&
|
||
|
mFooter.line == SPageHeader::NoLine )
|
||
|
{
|
||
|
mFooter.enable = false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
SPageMargin CHexPrinter::pageMargin( void )
|
||
|
{
|
||
14 years ago
|
TQPaintDeviceMetrics metric( this );
|
||
15 years ago
|
float f = (float)metric.width()/(float)metric.widthMM();
|
||
|
|
||
|
SPageMargin margin;
|
||
|
margin.top = (uint) (f*(float)mPageMargin.top);
|
||
|
margin.right = (uint) (f*(float)mPageMargin.right);
|
||
|
margin.bottom = (uint) (f*(float)mPageMargin.bottom);
|
||
|
margin.left = (uint) (f*(float)mPageMargin.left);
|
||
|
|
||
|
return( margin );
|
||
|
}
|
||
|
|
||
|
|
||
|
SPageMargin CHexPrinter::pageMarginMM( void )
|
||
|
{
|
||
|
return( mPageMargin );
|
||
|
}
|
||
|
|
||
|
|
||
|
SPageSize CHexPrinter::pageFullSize( void )
|
||
|
{
|
||
14 years ago
|
TQPaintDeviceMetrics metric( this );
|
||
15 years ago
|
SPageSize size;
|
||
|
size.width = metric.width();
|
||
|
size.height = metric.height();
|
||
|
|
||
|
return( size );
|
||
|
}
|
||
|
|
||
|
|
||
|
SPageSize CHexPrinter::pageUsableSize( void )
|
||
|
{
|
||
14 years ago
|
TQPaintDeviceMetrics metric( this );
|
||
15 years ago
|
SPageMargin margin = pageMargin();
|
||
|
SPageSize size;
|
||
|
|
||
|
uint mw = margin.left + margin.right;
|
||
|
if( metric.width() <= (int)mw )
|
||
|
{
|
||
|
size.width = 1;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
size.width = metric.width() - mw;
|
||
|
}
|
||
|
|
||
|
uint mh = margin.top + margin.bottom;
|
||
|
if( metric.height() <= (int)mh )
|
||
|
{
|
||
|
size.height = 1;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
size.height = metric.height() - mh;
|
||
|
}
|
||
|
|
||
|
return( size );
|
||
|
}
|
||
|
|