// Copyright (C) 2003 Dominique Devriese // 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 (at your option) 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. // this is a collection of definitions we need from KSeg. It includes // code from defs.H and G_drawstyle.H. Thanks to Ilya Baran for // making KSeg GPL, so there are no license probs or whatever.. /* * KSeg * Copyright (C) 1999-2003 Ilya Baran * * 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 * (at your option) 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, Cambridge, MA 02110-1301, USA. * * Send comments and/or bug reports to: * ibaran@mit.edu */ #ifndef DEFS_H #define DEFS_H #include #include #include using namespace std; #define DRAW_MAX 5000 // maximum coordinate. assumes you have a screen resolution less than this. #define BIG (1e+37) #define SMALL (1e-10) inline int ROUND(double x) { return ((int)(x + 0.5)); } inline int SIGN(double x) { return (x < 0) ? -1 : 1; } inline int INTRAND(int a, int b) { return TQMIN(a, b) + rand() % abs(a - b); } #define SQR(x) ((x) * (x)) #define CUBE(x) ((x) * (x) * (x)) #define QUAD(x) (((x) * (x)) * ((x) * (x))) enum G_Type { G_POINT = 1, G_SEGMENT = 2, G_RAY = 4, G_LINE = 8, G_CIRCLE = 16, G_ARC = 32, G_POLYGON = 64, G_CIRCLEINTERIOR = 128, G_ARCSECTOR = 256, G_ARCSEGMENT = 512, //non-primitive geometric types now: G_LOCUS = 1024, G_MEASURE = 2048, G_CALCULATE = 4096, G_ANNOTATION = 8192, //fake type for scripting: G_LOOP = 16384, //compound types now: G_STRAIGHT = G_SEGMENT | G_LINE | G_RAY, G_CURVE = G_STRAIGHT | G_ARC | G_CIRCLE, G_FILLED = G_POLYGON | G_CIRCLEINTERIOR | G_ARCSECTOR | G_ARCSEGMENT, G_GEOMETRIC = G_POINT | G_CURVE | G_FILLED | G_LOCUS, G_VALUE = G_MEASURE | G_CALCULATE, G_TEXT = G_VALUE | G_ANNOTATION, G_ANY = G_GEOMETRIC | G_TEXT | G_LOOP }; enum G_AnyType { G_TRANSLATED, G_ROTATED, G_SCALED, G_REFLECTED }; #define IS_TRANSFORM(x) ((x) == G_TRANSLATED || (x) == G_ROTATED || (x) == G_SCALED || (x) == G_REFLECTED) enum G_PointType { G_FREE_POINT = G_REFLECTED + 1, G_CONSTRAINED_POINT, G_INTERSECTION_POINT, G_INTERSECTION2_POINT, G_MID_POINT }; enum G_SegmentType { G_ENDPOINTS_SEGMENT = G_REFLECTED + 1 }; enum G_RayType { G_TWOPOINTS_RAY = G_REFLECTED + 1, G_BISECTOR_RAY }; enum G_LineType { G_TWOPOINTS_LINE = G_REFLECTED + 1, G_PARALLEL_LINE, G_PERPENDICULAR_LINE }; enum G_CircleType { G_CENTERPOINT_CIRCLE = G_REFLECTED + 1, G_CENTERRADIUS_CIRCLE }; enum G_ArcType { G_THREEPOINTS_ARC = G_REFLECTED + 1 }; enum G_FilledType { G_DEFAULT_FILLED = G_REFLECTED + 1 }; enum G_LocusType { G_OBJECT_LOCUS = G_REFLECTED + 1 }; enum G_MeasureType { G_DISTANCE_MEASURE, G_LENGTH_MEASURE, G_RADIUS_MEASURE, G_ANGLE_MEASURE, G_RATIO_MEASURE, G_SLOPE_MEASURE, G_AREA_MEASURE }; enum G_CalculateType { G_REGULAR_CALCULATE }; enum MenuIDs { ID_NEW_SEGMENT = 1, ID_NEW_MIDPOINT, ID_NEW_LINE, ID_NEW_PERPENDICULAR, ID_NEW_RAY, ID_NEW_BISECTOR, ID_NEW_CIRCLE, ID_NEW_INTERSECTION, ID_NEW_ARC, ID_NEW_LOCUS, ID_NEW_ARCSECTOR, ID_NEW_ARCSEGMENT, ID_NEW_CIRCLEINTERIOR, ID_NEW_POLYGON, ID_EDIT_UNDO, ID_EDIT_REDO, ID_EDIT_DELETE, ID_EDIT_TOGGLELABELS, ID_EDIT_SHOWLABELS, ID_EDIT_HIDELABELS, ID_EDIT_CHANGELABEL, ID_EDIT_HIDE, ID_EDIT_SHOWHIDDEN, ID_EDIT_COLOR, ID_EDIT_POINTSTYLE, ID_EDIT_LINESTYLE, ID_EDIT_FONT, ID_EDIT_CHANGE_NUMBER_OF_SAMPLES, ID_EDIT_PREFERENCES, ID_EDIT_COLOR_BLACK, ID_EDIT_COLOR_GRAY, ID_EDIT_COLOR_RED, ID_EDIT_COLOR_GREEN, ID_EDIT_COLOR_BLUE, ID_EDIT_COLOR_YELLOW, ID_EDIT_COLOR_PURPLE, ID_EDIT_COLOR_CYAN, ID_EDIT_COLOR_OTHER, ID_EDIT_POINTSTYLE_LARGECIRCLE, ID_EDIT_POINTSTYLE_MEDIUMCIRCLE, ID_EDIT_POINTSTYLE_SMALLCIRCLE, ID_EDIT_LINESTYLE_SOLID, ID_EDIT_LINESTYLE_DASHED, ID_EDIT_LINESTYLE_DOTTED, ID_EDIT_LINESTYLE_THIN, ID_EDIT_LINESTYLE_NORMAL, ID_EDIT_LINESTYLE_THICK, ID_EDIT_FONT_10, ID_EDIT_FONT_12, ID_EDIT_FONT_14, ID_EDIT_FONT_20, ID_EDIT_FONT_30, ID_EDIT_FONT_FONT, ID_MEASURE_DISTANCE, ID_MEASURE_LENGTH, ID_MEASURE_RADIUS, ID_MEASURE_ANGLE, ID_MEASURE_RATIO, ID_MEASURE_SLOPE, ID_MEASURE_AREA, ID_MEASURE_CALCULATE, ID_TRANSFORM_CHOOSE_VECTOR, ID_TRANSFORM_CHOOSE_MIRROR, ID_TRANSFORM_CHOOSE_CENTER, ID_TRANSFORM_CHOOSE_RATIO, ID_TRANSFORM_CHOOSE_ANGLE, ID_TRANSFORM_CLEAR_CHOSEN, ID_TRANSFORM_TRANSLATE, ID_TRANSFORM_ROTATE, ID_TRANSFORM_REFLECT, ID_TRANSFORM_SCALE, ID_CONSTRUCTION_MAKE_NORMAL, ID_CONSTRUCTION_MAKE_GIVEN, ID_CONSTRUCTION_MAKE_FINAL, ID_CONSTRUCTION_MAKE_INITIAL, ID_CONSTRUCTION_RECURSE, ID_PLAY_QUICKPLAY, ID_QUICKPLAY_SET_DIRECTORY, ID_FILE_RECENTLIST_START //should be the last entry }; #endif //DEFS_H /* * KSeg * Copyright (C) 1999-2003 Ilya Baran * * 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 * (at your option) 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, Cambridge, MA 02110-1301, USA. * * Send comments and/or bug reports to: * ibaran@mit.edu */ #ifndef G_DRAWSTYLE_H #define G_DRAWSTYLE_H enum PointStyle { ANY = 0, SMALL_CIRCLE, MEDIUM_CIRCLE, LARGE_CIRCLE }; #endif //G_DRAWSTYLE_H