/********************************************************************** * 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 #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