📄 header.c
字号:
/****************************************************************/
/* COPYRIGHT NOTICE */
/* ---------------- */
/* All software in this listing remain the strict copyright */
/* of Ilija Kovacevic and cannot be copied or used in any way */
/* except by written permission of Ilija Kovacevic. */
/* */
/* Copyright (c) 1992 Ilija Kovacevic */
/* www.kov.com email ilija@kov.com */
/****************************************************************/
#include "dwgin.h"
#define DEFAULT_HEADER_SIZE 0x51e
static unsigned char default_header[ DEFAULT_HEADER_SIZE ] =
{
65,67,49,48,48,54,0,0,0,0,0,0,1,3,0,5,0,160,0,0,30,5,0,0,70,5,0,0,218,8,0,
0,0,0,0,64,218,8,0,0,0,0,0,128,37,0,0,0,0,0,70,5,0,0,37,0,1,0,0,0,70,5,0,0,
194,0,1,0,0,0,107,5,0,0,187,0,1,0,0,0,45,6,0,0,149,0,0,0,0,0,232,6,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,122,64,0,0,0,0,0,144,114,64,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,122,64,0,0,0,0,
0,144,114,64,43,227,122,118,140,51,111,64,39,92,136,96,12,153,102,64,0,0,0,0,0,0,0,0,39,92,136,96,12,
153,118,64,1,0,0,0,0,0,0,0,36,64,0,0,0,0,0,0,36,64,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,1,0,1,0,0,0,2,0,0,0,0,0,0,0,57,64,0,0,0,0,0,0,8,64,0,0,0,0,0,0,
36,64,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,217,1,227,112,23,246,63,2,0,2,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,0,0,0,0,0,0,0,0,
0,0,4,0,0,0,0,0,1,0,97,99,97,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,
0,0,0,0,0,0,8,64,0,0,0,0,0,0,4,64,0,0,0,0,0,0,36,64,0,0,0,0,0,0,4,64,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,64,0,0,0,0,0,0,8,192,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,
63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,
63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,208,7,2,0,0,1,0,1,78,94,37,0,228,56,103,3,78,94,37,0,180,189,103,3,0,0,0,0,208,132,0,0,
0,0,0,0,208,132,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,43,135,22,217,206,247,163,63,0,0,0,0,0,0,240,63,6,0,0,0,1,0,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,105,0,0,0,0,0,232,6,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,73,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,248,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,12,0,12,0,6,0,12,0,12,0,249,0,2,0,0,
0,232,6,0,0,0,0,6,0,3,0,26,255,33,0,0,0,0,0,218,8,0,0,0,0
};
//#ifdef DOS
#define convert_INT16( a ) *(a)
#define convert_INT32( a ) *(a)
#define convert_DOUBLE( a ) *(a)
#//endif
#ifdef BIG_ENDIAN
PRIVATE DOUBLE convert_DOUBLE( DOUBLE *number )
{
DOUBLE n;
char *s,*d;
d = ( char * )&n;
s = ( char * )number;
s += 7;
*d++ = *s--; /* long winded but faster than for loop */
*d++ = *s--;
*d++ = *s--;
*d++ = *s--;
*d++ = *s--;
*d++ = *s--;
*d++ = *s--;
*d = *s;
return( n );
}
PRIVATE INT16 convert_INT16( INT16 *number )
{
INT16 n;
char *s,*d;
d = ( char * )&n;
s = ( char * )number;
s += 1;
*d++ = (*s--)&0xff;
*d = (*s)&0xff;
return( n );
}
PRIVATE INT32 convert_INT32( INT32 *number )
{
INT32 n;
char *s,*d;
d = ( char * )&n;
s = ( char * )number;
s += 3;
*d++ = *s--;
*d++ = *s--;
*d++ = *s--;
*d = *s;
return( n );
}
#endif
PRIVATE void show_time_value( long days,long millisecs ) /* print AutoCAD time/date out to debug file */
{
int hours,mins;
dprintf( " days %ld millisecs %ld ",days,millisecs );
hours = ( int )( millisecs/3600000L );
millisecs -= hours*3600000L;
mins = ( int )( millisecs/60000L );
millisecs -= mins*60000L;
dprintf( "%ld days %d:%d:%lf\n",days,hours,mins,millisecs/1000.0 );
}
AcadHeader *AcadHeader__create( void )
{
return( ( AcadHeader * )get_memory( sizeof( AcadHeader ) ) );
}
PUBLIC void AcadHeader__delete( AcadHeader *me )
{
free( ( char * )me );
}
PUBLIC void AcadHeader__dump_to_debug_file( AcadHeader *me )
{
#ifndef WIN31
dprintf( "********** HIDDEN SYSTEM PARAMETERS ***********\n" );
dprintf( "ENTITIES START %8lxH",me->entities_start );
dprintf( " ENTITIES %d\n",me->entities );
dprintf( "BLOCK NAMES START %8lxH",me->block_names_start );
dprintf( " BLOCKS %d\n",me->blocks );
dprintf( "LAYERS START %8lxH",me->layers_start );
dprintf( " LAYERS %d size %xH\n",me->layers,me->layer_size );
dprintf( "FONT STYLES START %8lxH",me->font_styles_start );
dprintf( " FONT STYLES %d size %xH\n",me->styles,me->font_styles_size );
dprintf( "LINE TYPES START %8lxH",me->line_types_start );
dprintf( " LINE TYPES %d size %xH\n",me->line_types,me->line_type_size );
dprintf( "VIEWS START %8lxH",me->views_start );
dprintf( " VIEWS %d size %xH\n",me->views,me->view_size );
dprintf( "DWGMGR START %8lxH\n",me->dwgmgr_start );
if ( __drawing->acad10 OR __drawing->acad11 )
{
dprintf( "UCSS START %8lxH",me->ucss_start );
dprintf( " UCS COUNT %d size %xH\n",me->ucss,me->ucss_size );
dprintf( "VIEWPORTS START %8lxH",me->viewports_start );
dprintf( " VIEWPORTS %d size %xH\n",me->viewports,me->viewports_size );
}
if ( __drawing->acad11 )
{
dprintf( "APPLICATIONS %d START %8lxH SIZE %xH\n",me->applications,me->applications_start,me->applications_size );
dprintf( "DIMSTYLES %d START %8lxH SIZE %xH\n",me->dimstyles,me->dimstyles_start,me->dimstyles_size );
}
dprintf( "BLOCKS START %8lxH",me->blocks_start );
dprintf( " BLOCKS %d\n",me->blocks );
dprintf( "INDIRECTS START %8lxH",me->indirects_start );
dprintf( "\nNEXT ENTITY %d\n",me->next_entity );
dprintf( "*********** SYSTEM PARAMETERS ***********\n" );
dprintf( "ACADVER [%s]\n",me->acadver );
dprintf( "ANGBASE = %lf\n",me->angbase );
dprintf( "ANGDIR = " );
if ( me->angdir ) dprintf( "CLOCKWISE\n" );
else dprintf( "ANTICLOCKWISE\n" );
dprintf( "ATTMODE = " );
if ( me->attmode EQ 0 ) dprintf( "NONE\n" );
else if ( me->attmode EQ 1 ) dprintf( "NORMAL\n" );
else if ( me->attmode EQ 2 ) dprintf( "ALL\n" );
dprintf( "AUNITS = " );
switch( me->aunits )
{
case 0 :dprintf( "DECIMAL DEGREES\n" );
break;
case 1 :dprintf( "DEGREES/MINUTES/SECONDS\n" );
break;
case 2 :dprintf( "GRADS\n" );
break;
case 3 :dprintf( "RADIANS\n" );
break;
case 4 :dprintf( "SURVEYOR'S UNITS\n" );
break;
}
dprintf( "AUPREC = %d\n",me->auprec );
dprintf( "AXIS = " );
if ( me->axismode ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "AXISUNIT = %lf,%lf\n",me->axisunit_x,me->axisunit_y );
dprintf( "BLIPMODE = " );
if ( me->blipmode ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "CECOLOR = %d\n",me->cecolor );
dprintf( "CELTYPE = " );
if ( me->celtype ) dprintf( "BYBLOCK\n" );
else dprintf( "BYLAYER\n" );
dprintf( "CHAMFERA = %lf\n",me->chamfera );
dprintf( "CHAMFERB = %lf\n",me->chamferb );
dprintf( "CLAYER = %d\n",me->clayer );
dprintf( "COORDS = " );
if ( me->coords EQ 0 ) dprintf( "STATIC\n" );
else if ( me->coords EQ 1 ) dprintf( "CONTINUOUS UPDATE\n" );
else dprintf( "d<a FORMAT\n" );
dprintf( "DIMSTYLE %xH\n",me->dimstyle&0xff );
dprintf( "DIMALT = " );
if ( me->dimalt ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "DIMALTD = " );
if ( me->dimaltd ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "DIMALTF = %lf\n",me->dimaltf );
dprintf( "DIMASO = " );
if ( me->dimaso ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "DIMASZ = %lf\n",me->dimasz );
dprintf( "DIMCEN = %lf\n",me->dimcen );
dprintf( "DIMDLE = %lf\n",me->dimdle );
dprintf( "DIMDLI = %lf\n",me->dimdli );
dprintf( "DIMEXE = %lf\n",me->dimexe );
dprintf( "DIMEXO = %lf\n",me->dimexo );
dprintf( "DIMLFACDIM = %lf\n",me->dimlfac );
dprintf( "DIMLIM = " );
if ( me->dimlim ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "DIMRND = %lf\n",me->dimrnd );
dprintf( "DIMSCALE = %lf\n",me->dimscale );
dprintf( "DIMSE2 = " );
if ( me->dimse2 ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "DIMSHO = " );
if ( me->dimsho ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "DIMTAD = " );
if ( me->dimtad ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "DIMTIH = " );
if ( me->dimtih ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "DIMTH = %lf\n",me->dimtm );
dprintf( "DIMTOH = " );
if ( me->dimtoh ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "DIMTOL = " );
if ( me->dimtol ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "DIMTP = %lf\n",me->dimtp );
dprintf( "DIMTSZ = " );
if ( me->dimtsz ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "DIMTXT = %lf\n",me->dimtxt );
dprintf( "DIMZIN = " );
if ( me->dimzin ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "DRAGMODE = " );
if ( me->dragmode EQ 2 ) dprintf( "AUTO\n" );
else if ( me->dragmode EQ 0 ) dprintf( "OFF\n" );
else dprintf( "ON\n" );
dprintf( "ELEVATION = %lf\n",me->elevation );
dprintf( "EXTMAX = %lf,%lf,%lf\n",me->extmin_x,me->extmin_y,me->extmax_z );
dprintf( "EXTMIN = %lf,%lf,%lf\n",me->extmax_x,me->extmax_y,me->extmax_z );
dprintf( "FASTZOOM = " );
if ( me->fastzoom ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "FASTCIRCLE = %d\n",me->fastcircle );
dprintf( "FILLETRAD = %lf\n",me->filletrad );
dprintf( "FILLMODE = " );
if ( me->fillmode ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "FLATLAND = " );
if ( me->flatland ) dprintf( "TRUE\n" );
else dprintf( "FALSE\n" );
dprintf( "GRID = " );
if ( me->gridmode ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "GRIDUNIT = %lf,%lf\n",me->gridunit_x,me->gridunit_y );
dprintf( "INSBASE = %lf,%lf\n",me->insbase_x,me->insbase_y );
dprintf( "LIMCHECK = " );
if ( me->limcheck ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "LIMMAX = %lf,%lf\n",me->limmax_x,me->limmax_y );
dprintf( "LIMMIN = %lf,%lf\n",me->limmin_x,me->limmin_y );
dprintf( "LTSCALE = %lf\n",me->ltscale );
dprintf( "LUNITS = " );
switch( me->lunits )
{
case 1 :dprintf( "SCIENTIFIC\n" );
break;
case 2 :dprintf( "DECIMAL\n" );
break;
case 3 :dprintf( "ENGINEERING\n" );
break;
case 4 :dprintf( "ARCHITECTURAL\n" );
break;
}
dprintf( "LUPREC = %d\n",me->luprec );
dprintf( "MENU = [%s]\n",me->menu );
dprintf( "MIRRTEXT = " );
if ( me->mirrtext ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "ORTHOMODE = " );
if ( me->orthomode ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "OSMODE = %d\n",me->osmode );
dprintf( "PDMODE = %d\n",me->pdmode );
dprintf( "PDSIZE = %lf\n",me->pdsize );
dprintf( "QTEXTMODE = " );
if ( me->qtextmode ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "REGENMODE = " );
if ( me->regenmode ) dprintf( "AUTO\n" );
else dprintf( "OFF\n" );
dprintf( "SKETCHINC = %lf\n",me->sketchinc );
dprintf( "SKPOLY = " );
if ( me->skpoly ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "SNAP = " );
if ( me->snapmode ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "SNAPANG = %lf\n",me->snapang );
dprintf( "SNAPBASE = %lf,%lf\n",me->snapbase_x,me->snapbase_y );
dprintf( "SNAPSTYLE = " );
if ( me->snapstyle ) dprintf( "ISOMETRIC\n" );
else dprintf( "STANDARD\n" );
dprintf( "SNAPUNIT = %lf,%lf\n",me->snapunit_x,me->snapunit_y );
dprintf( "TEXTSIZE = %lf\n",me->text_size );
dprintf( "THICKNESS = %lf\n",me->thickness );
dprintf( "TRACEWID = %lf\n",me->tracewid );
dprintf( "TDCREAT = " );
show_time_value( me->tdcreate_days,me->tdcreate_fraction );
dprintf( "TDUPDATE = " );
show_time_value( me->tdupdate_days,me->tdupdate_fraction );
dprintf( "TDINDWG = " );
show_time_value( me->tdindwg_days,me->tdindwg_fraction );
dprintf( "TDUSER = " );
show_time_value( me->tdusrtimer_days,me->tdusrtimer_fraction );
dprintf( "USRTIMER = " );
if ( me->usrtimer ) dprintf( "ON\n" );
else dprintf( "OFF\n" );
dprintf( "VIEWCTR = %lf,%lf\n",me->viewctr_x,me->viewctr_y );
dprintf( "VDIR = %lf,%lf,%lf\n",me->viewdir_x,me->viewdir_y,me->viewdir_z );
dprintf( "VIEWSIZE = %lf\n",me->viewsize );
if ( __drawing->acad10 OR __drawing->acad11 )
{
dprintf( "\tWORLDVIEW %xH\n",me->worldview );
}
if ( __drawing->acad11 )
{
dprintf( "\tDIMCLRD %d\n",me->dimclrd );
dprintf( "\tDIMCLRE %d\n",me->dimclre );
dprintf( "\tDIMCLRT %d\n",me->dimclrt );
dprintf( "\tSHADEDGE %xH\n",me->shadedge );
dprintf( "\tSHADEDIF %d\n",me->shadedif );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -