File: thpdfdata.h

package info (click to toggle)
therion 6.3.4-2
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 15,544 kB
  • sloc: cpp: 195,273; tcl: 19,779; ansic: 8,434; perl: 1,895; makefile: 1,281; python: 255; asm: 219; sh: 104
file content (153 lines) | stat: -rw-r--r-- 5,157 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
/*
 * Copyright (C) 2003 Martin Budaj
 * 
 * $Date: $
 * $RCSfile: $
 * $Revision: $
 *
 * -------------------------------------------------------------------- 
 * 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
 * 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
 * --------------------------------------------------------------------
 */
 
#ifndef thpdfdata_h
#define thpdfdata_h

#include <string>
#include <list>
#include <map>
#include <set>
#include "thepsparse.h"

enum class shading_mode {off, quick};  // add precise

struct surfpictrecord {
  const char * filename = {}, * type = {};
  double dx = {}, dy = {}, xx = {}, xy = {}, yx = {}, yy = {}, width = {}, height = {};
};

struct scraprecord {
  unsigned int id;
  std::string name,F,B,I,E,X,G,C,P;      // name + files
    // E: scrap content that is not clipped  (walls, surveys, clip off)
    // F: scrap content that will be clipped (most of map features)
    // B: scrap outline, stroked             (produced by MP draw_upscrap macro)
    // I: scrap outline, filled              (produced by MP draw_downscrap macro)     extension: bg
    // C: clipping path                      (produced by MP draw_downscrap macro)     extension: clip
    // X: labels
    // P: text bboxes used for clipping      (produced by MP process_[*]label macros)   extension: bbox
    // [G: scrap background, UNUSED]
  converted_data Fc, Bc, Ic, Ec, Xc, Gc;
  double S1,S2;                      // shift
  int layer,level,sect;              // layer; level; sect: 1 for cross-sections, 0 otherwise
  double F1,F2,F3,F4,                // bounding boxes
        G1,G2,G3,G4,
        B1,B2,B3,B4,
        I1,I2,I3,I4,
        E1,E2,E3,E4,
        X1,X2,X3,X4;

  color col_scrap;

  // Gouraud shading data (BitsPerCoordinate = 8, BitsPerComponent = 8)
  int gour_n;
  double gour_xmin, gour_xmax, gour_ymin, gour_ymax;
  std::string gour_stream;

  // Scrap identifiers
  std::string src_name, src_survey;

  std::list<surfpictrecord> SKETCHLIST;
  scraprecord();
};

struct layerrecord {
  std::set<int> U,D;  // U: preview above references, D: preview below references
  std::string N,T,Nraw;    // N: layer name, T: title (creates a title page in the atlas), Nraw: map id
  int Z;         // 0 for maps of maps (expanded), 1 for maps of scraps (basic)
  int AltJump;   // reference to the expanded layer with U/D previews in basic layers
  int minx, maxx, miny, maxy;
  bool bookmark;
  std::map< int,std::set<std::string> > scraps;
  std::set<std::string> allscraps;
  
  layerrecord();
};

struct legendrecord {
  std::string name, fname, descr;
  converted_data ldata;
  unsigned idsym = {}, idfig = {}, idnum = {};
};

struct colorlegendrecord {
  color col_legend;
  std::string texname, name;
};

struct paired {
  double x,y;
  
  paired();
};

paired rotatedaround(paired x,paired o, double th);

struct layout {
  std::string excl_list,labelx,labely,
         doc_author,doc_keywords,doc_subject,doc_title,doc_comment,
         northarrow, scalebar, altitudebar, langstr,
         icc_profile_cmyk, icc_profile_rgb, icc_profile_gray;
  bool  excl_pages,title_pages,page_numbering,
        transparency,map_grid,OCG,map_header_bg,colored_text,transparent_map_bg,geospatial;
  double hsize,vsize,overlap,
        hgridsize = 0.0, vgridsize = 0.0,
        hgridorigin, vgridorigin, gridrot = 0.0,
        nav_factor, XS = 0.0, YS = 0.0, XO = 0.0, YO = 0.0;
  int nav_right,nav_up,own_pages,lang,legend_columns;
  int alpha_step;   // alpha increment in percent
  shading_mode smooth_shading;
  double hoffset, voffset, opacity = 0.0, legend_width;
  color col_background, col_foreground, col_preview_below, col_preview_above;
  colormodel output_colormodel = {};
  
  int surface, grid = 0, proj = 0, grid_coord_freq; // freq 0 no, 1 border, 2 all
  std::string gridAA, gridAB, gridAC, 
         gridBA, gridBB, gridBC, 
         gridCA, gridCB, gridCC;
  paired gridcell[9];
  double surface_opacity;
  paired calibration_local[9], calibration_latlong[9];
  double calibration_hdist = 0.0;
  
  layout();
};

extern std::map<int,layerrecord> LAYERHASH;
extern std::set<int> MAP_PREVIEW_UP, MAP_PREVIEW_DOWN;
extern std::list<scraprecord> SCRAPLIST;
extern std::list<legendrecord> LEGENDLIST;
extern std::list<colorlegendrecord> COLORLEGENDLIST;
extern layout LAYOUT;
extern std::list<pattern> PATTERNLIST;
extern std::list<converted_data> GRIDLIST;
extern converted_data NArrow, ScBar, AltBar;
extern std::map<std::string,gradient> GRADIENTS;



extern std::list<surfpictrecord> SURFPICTLIST;

#endif