blob: 458eb193b6ade1057942fcc0737d08c54dec8896 [file] [log] [blame]
/**********************************************************************
* File: txtregn.h (Formerly text_region.h)
* Description: Text region within a polygonal block
* Author: Sheelagh Lloyd?
* Created:
*
* (C) Copyright 1993, Hewlett-Packard Ltd.
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
** http://www.apache.org/licenses/LICENSE-2.0
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*
**********************************************************************/
#ifndef TXTREGN_H
#define TXTREGN_H
#include <stdio.h>
#include "elst.h"
#include "hpdsizes.h"
#include "polyblk.h"
#include "debugwin.h"
#include "hpddef.h" //must be last (handpd.dll)
#define REGION_COLOUR ScrollView::CYAN
#define SUBREGION_COLOUR ScrollView::GREEN
class DLLSYM TEXT_REGION; //forward decl
ELISTIZEH_S (TEXT_REGION)
class DLLSYM TEXT_REGION:public ELIST_LINK, public POLY_BLOCK
//text REGION
{
public:
TEXT_REGION() {
} //empty constructor
TEXT_REGION( //simple constructor
inT32 idno,
ICOORDELT_LIST *points,
TEXT_REGION_LIST *child);
TEXT_REGION( //simple constructor
inT32 idno,
ICOORDELT_LIST *points);
TEXT_REGION( //constructor
inT32 idno,
ICOORDELT_LIST *points,
inT8 hor,
inT8 tex,
inT8 ser,
inT8 pro,
inT8 nor,
inT8 upr,
inT8 sol,
inT8 bla,
inT8 und,
inT8 dro);
~TEXT_REGION () { //destructor
}
void set_id_no(inT32 new_id) {
id_number = new_id;
}
inT32 id_no() {
return id_number;
}
inT32 nregions() {
return txt_regions.length ();
}
BOOL8 is_prop() const { //test proportional
return !proportional; //stored negatively
}
void set_prop(BOOL8 prop) {
if (prop)
proportional = 0;
else
proportional = 1;
}
void add_a_region(TEXT_REGION *newchild);
//get children
TEXT_REGION_LIST *regions() {
return &txt_regions;
}
void set_attrs(inT8 hor,
inT8 tex,
inT8 ser,
inT8 pro,
inT8 nor,
inT8 upr,
inT8 sol,
inT8 bla,
inT8 und,
inT8 dro);
void show_attrs(DEBUG_WIN *f);
void rotate( //rotate it
FCOORD rotation);
void move( //move it
ICOORD shift); //vector
void prep_serialise() { //set ptrs to counts
POLY_BLOCK::prep_serialise();
txt_regions.prep_serialise ();
}
void dump( //write external bits
FILE *f) {
POLY_BLOCK::dump(f);
txt_regions.dump (f);
}
void de_dump( //read external bits
FILE *f) {
POLY_BLOCK::de_dump(f);
txt_regions.de_dump (f);
}
//serialise to ascii
make_serialise (TEXT_REGION) void serialise_asc (
FILE * f);
void de_serialise_asc( //serialise from ascii
FILE *f);
private:
inT32 id_number; //unique id
inT8 horizontal; //horizontal, vertical, skewed
inT8 text; //text, table, form
inT8 serif; //serif, sansserif
inT8 proportional; //proportional, fixed
inT8 normal; //normal, bold
inT8 upright; //upright, italic
inT8 solid; //solid, outline
inT8 black; //black, coloured, white,
inT8 underlined; //not underlined, underlined
inT8 dropcaps; //not dropcaps, dropcaps
TEXT_REGION_LIST txt_regions;
};
#endif