inrimage 4.6.9
contour.h
1
20/*
21 structure des fichiers de contours
22 (organisés en blocs de 256 octets)
23 structure bloc 0 (indices de mots de 4 octets)
24 0=numero contour max, 1=nb effectif de contours, 2=nb de bloc. indx
25 3=nb total bloc. index+data, 4=adresse 1er bloc. index
26 5=adresse dernier bloc ind., 6=ptr de la 1ere donnee (2*256+2)
27 7=ptr du prochain mot libre pour les donnees
28 8= magic number (0x00ab) pour nouveau type (longueur et iext en long)
29 9=surface totale d'objet (somme algebriques des 1er param. des con
30 10=surf. totale des cont. "exterieurs" (somme des val. abs. des
31 1ers param. des contours)
32 11=nb max de parametres pour un contour donne
33 32 a 63 : commentaire termine par 1 short nul.
34
35 structure bloc index : numéro bloc index precedent, num bloc suivant
36 62 ptrs vers datas du contour (ptr numéro n pour contour n) :
37 valeur 256*k+l ou k=num bloc et l=numéro de mot dans bloc
38
39 structure bloc data : 1 numéro bloc suivant, 63 mots de data.
40 les contours sont ranges consecutivement :
41 1/2 mot=lgr effective, 1/2 mot num. enveloppe
42 1/2 mot nb de param, 1/2 mot indicateur de chainage (0 si datas
43 consecutives, +n si n mots consecutifs pas tous occupes, -n
44 si n-1 mots consecutifs suivis d'un ptr vers la suite dans ce
45 cas la suite commence par un mot indicateur de chainage)
46 k mots parametres
47 mots de donnees (1short x, 1 short y, valeurs >= 1))
48
49NB : les "ptr" sont des indices de mots de 32bits comptés à partir de 1
50 1 mot = 32 bits, 1/2 mot = un short
51*/
52
53/* definitions relatives a la taille des blocs */
54
55#define MAXCT 6
56#define NBYTE 256
57#define NBINT4 64
58#define CT_MAGIC 0x000000ab
59#define CT_MAGIC_SWAP 0xab000000
60
61struct ct_indx {
62 int4 i_prev; /* adr. du bloc precedent */
63 int4 i_next; /* adr. bloc suivant */
64 int4 i_pt[NBINT4-2]; /* ptrs vers data des contours */
65};
66
67union hdrdata {
68 int4 d_l;
69 struct {
70 short d_lgr; /* lgr contour en nb de mots 32bits */
71 short d_env; /* num. enveloppe */
72 } d1;
73 struct {
74 short d_nbpar; /* nb de parametres associes */
75 short d_store; /* indicateur de stockage des donnees :
76 0 si d_lgr donnees a la suite,
77 +N si d_lgr donnees sur N mots (N>= d_lgr)
78 -N si le 1er mot apres param est un pointeur vers
79 nouvelle zone de donnees de taille N. */
80 } d2;
81};
82
83struct hdrdn {
84 int4 dn_lgr;
85 int4 dn_env;
86 int4 dn_nbpar;
87 int4 dn_store;
88};
89
90struct ct_s0 {
91 int4 ct_nmax; /* num contour max */
92 int4 ct_nb; /* nb effectif de contours */
93 int4 ct_nbsi; /* nb blocs index */
94 int4 ct_nbs; /* nb total blocs index+ data */
95 int4 ct_si1; /* adr 1er bloc. index */
96 int4 ct_sin; /* adr dernier bloc. index */
97 int4 ct_dat1; /* ptr vers 1e donnee : 2*NBYTE+2 */
98 int4 ct_fdat; /* ptr vers 1er mot de donnees libre */
99 int4 ct_magic;
100 int4 ct_stot; /* surface totale */
101 int4 ct_stote; /* surf totale des cont. "exterieurs" */
102 int4 ct_npmax; /* nb max de param. par contour */
103};
104struct ct_b0 {
105 struct ct_s0 b0_s0;
106 int4 s_fill[20];
107 char s_com[128]; /* commentaire termine par 0 */
108};
109
113struct fc_cont { /* structure associee a 1 fichier de contour ouvert */
114 int4 fc_fd;
115 int4 fc_numf;
116 int4 n_ind;
117 int4 s_ind;
118 int4 s_dat;
119 int4 *pt_datn;
120 int4 i_dat;
121 int4 ct_pos;
123 int4 fc_num;
124 int4 fc_numd;
125 int4 fc_numx;
126 int4 ct_lgr;
127 char ct_loc;
132 char fc_flag;
133 char fc_typ;
135 char fc_posp;
136 char fc_posp2;
137 char fc_res2[2];
138 int4 fc_nbwr;
139 char flg_i;
140 char flg_d;
141 char flg_s0;
144 char fc_name[80];
145 struct ct_s0 fc_s0;
147 int4 fc_dat[NBINT4];
148};
149
150#define CT_R 1
151#define CT_W 2
152#define CT_MOD 4
153
154#define c_nmax fc_s0.ct_nmax
155#define c_nb fc_s0.ct_nb
156#define c_nbsi fc_s0.ct_nbsi
157#define c_nbs fc_s0.ct_nbs
158#define c_si1 fc_s0.ct_si1
159#define c_sin fc_s0.ct_sin
160#define c_dat1 fc_s0.ct_dat1
161#define c_fdat fc_s0.ct_fdat
162#define c_magic fc_s0.ct_magic
163#define c_stot fc_s0.ct_stot
164#define c_stote fc_s0.ct_stote
165#define c_npmax fc_s0.ct_npmax
166
167struct ct_select {
168 int cnt_min, cnt_max; /* num. min et max >= 1 */
169 char *cnt_marks; /* ptr NULL ou 1 octet/ contour (1 si actif) */
170};
171
172#define swap2(x,y) { x = y; y = ((x >> 8) & 0xff) | (x << 8); }
173#define swap4(x,y) { x = y;\
174y = (x << 24) | ((x & 0xff00) << 8) | ((x >> 8) & 0xff00) | ((x >> 24) & 0xff);}
175
176
188struct fc_cont *c_iouvct(char *nom, int age, char *acces);
189void c_fermct(struct fc_cont *nfc);
190
191void c_wctcom( struct fc_cont *nfc, char *icom);
192int c_irctcm( struct fc_cont *nfc, char *icom);
193
194int c_irctdm( struct fc_cont *nfc, int4 *ixy0, int4 *idimxy);
195void c_wctdim( struct fc_cont *nfc, int4 *ixy0, int4 *idimxy);
196
197int c_irctgp( struct fc_cont *nfc, Fort_int *numax,
198 Fort_int *nbct, Fort_int *npmax,
199 Fort_int *nblocs, Fort_int *iftyp);
200
201int c_irctpa( struct fc_cont *nfc, int num, Fort_int *isens,
202 Fort_int *iext, Fort_int *lgr, int4* par,
203 int npmax, Fort_int *np);
204void c_wrctpa( struct fc_cont *nfc, int n, int4* par, int np);
205
206int c_ircttb( struct fc_cont *nfc, int n, int4 *icont, int lgmax);
207void c_wrcttb( struct fc_cont *nfc, int n, int4 *icont, int lgr);
208
209void c_wrctev( struct fc_cont *nfc, int n, int iext);
210
211void c_wrctls( struct fc_cont *nfc, int n, int4 *list, int i0, int lgbl, int iop);
212void c_ctdel( struct fc_cont *nfc, int n);
213
void c_wrctev(struct fc_cont *nfc, int n, int iext)
Écriture du numéro d'enveloppe d'un contour.
Definition: wrcttb.c:109
void c_wrcttb(struct fc_cont *nfc, int n, int4 *icont, int lgr)
Écriture des éléments d'un contour.
Definition: wrcttb.c:223
int c_ircttb(struct fc_cont *nfc, int n, int4 *icont, int lgmax)
Lit les éléments d'un contour.
Definition: ircttb.c:235
int c_irctdm(struct fc_cont *nfc, int4 *ixy0, int4 *idimxy)
Lecture des coordonnées de la fenêtre originale (s'ils existent).
Definition: ircttb.c:119
void c_wctdim(struct fc_cont *nfc, int4 *ixy0, int4 *idimxy)
Écrire ou réécrire en commentaire dans le fichier de contours la taille de la fenêtre analysée.
Definition: wrcttb.c:83
int c_irctgp(struct fc_cont *nfc, Fort_int *numax, Fort_int *nbct, Fort_int *npmax, Fort_int *nblocs, Fort_int *iftyp)
Lecture des informations générales d'un fichier de contours.
Definition: ircttb.c:51
int c_irctcm(struct fc_cont *nfc, char *icom)
Lecture du commentaire d'un fichier de contours.
Definition: ircttb.c:82
struct fc_cont * c_iouvct(char *nom, int age, char *acces)
Ouverture d'un fichier de contours.
Definition: iouvct.c:61
void c_ctdel(struct fc_cont *nfc, int n)
Suppression d'un contour.
Definition: wrcttb.c:449
int c_irctpa(struct fc_cont *nfc, int num, Fort_int *isens, Fort_int *iext, Fort_int *lgr, int4 *par, int npmax, Fort_int *np)
Lecture des paramètres d'un contour.
Definition: ircttb.c:168
void c_wrctpa(struct fc_cont *nfc, int n, int4 *par, int np)
Écriture des paramètres d'un contour.
Definition: wrcttb.c:159
void c_wctcom(struct fc_cont *nfc, char *icom)
Écriture d'un commentaire dans un fichier contours.
Definition: wrcttb.c:45
void c_fermct(struct fc_cont *nfc)
Fermeture d'un fichier de contours.
Definition: iouvct.c:206
Definition: contour.h:104
Definition: contour.h:61
Definition: contour.h:90
Definition: contour.h:167
Descripteur de fichier de contours.
Definition: contour.h:113
char ct_loc
Definition: contour.h:127
int4 fc_numf
Definition: contour.h:115
int4 fc_numx
Definition: contour.h:125
char fc_posp
Definition: contour.h:135
int4 fc_num
Definition: contour.h:123
int4 s_ind
Definition: contour.h:117
int4 fc_nbwr
Definition: contour.h:138
char fc_name[80]
Definition: contour.h:144
int4 s_dat
Definition: contour.h:118
int4 * pt_datn
Definition: contour.h:119
int4 fc_fd
Definition: contour.h:114
char fc_typ
Definition: contour.h:133
int4 fc_dat[64]
Definition: contour.h:147
struct ct_indx fc_indx
Definition: contour.h:146
char flg_s0
Definition: contour.h:141
char fc_posp2
Definition: contour.h:136
char flg_d
Definition: contour.h:140
char fc_flag
Definition: contour.h:132
char fc_access
Definition: contour.h:142
int4 fc_numd
Definition: contour.h:124
char fc_swap_needed
Definition: contour.h:134
int4 n_ind
Definition: contour.h:116
int4 ct_pos
Definition: contour.h:121
int4 ct_lgr
Definition: contour.h:126
char flg_i
Definition: contour.h:139
int4 i_dat
Definition: contour.h:120
Definition: contour.h:83
Definition: contour.h:67