digit.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #ifndef __DIGIT_H__
  2. #define __DIGIT_H__
  3. #define GSQL_MAX 4000
  4. #include <vector>
  5. #include <map>
  6. class Digit
  7. {
  8. private:
  9. /* layer / max category */
  10. std::map<int, int> cats;
  11. DisplayDriver *display;
  12. int SetCategory(int, int);
  13. struct Map_info** OpenBackgroundVectorMap(const char *);
  14. /* undo/redo */
  15. enum action_type { ADD, DELETE, REWRITE };
  16. struct action_meta {
  17. action_type type;
  18. int line;
  19. /* TODO: replace by new Vect_restore_line() */
  20. int ltype; // line type
  21. struct line_pnts *Points;
  22. struct line_cats *Cats;
  23. };
  24. std::map<int, std::vector<action_meta> > changesets;
  25. int changesetCurrent; /* first changeset to apply */
  26. int changesetDead; /* first dead changeset */
  27. int AddActionToChangeset(int, action_type, int);
  28. int ApplyChangeset(int, bool);
  29. void FreeChangeset(int);
  30. int RemoveActionFromChangeset(int, action_type, int);
  31. public:
  32. Digit(DisplayDriver *);
  33. ~Digit();
  34. int InitCats();
  35. int AddLine(int, std::vector<double>, int, int,
  36. const char*, int, double);
  37. int RewriteLine(int, std::vector<double>,
  38. const char*, int, double);
  39. int SplitLine(double, double, double,
  40. double);
  41. int DeleteLines(bool);
  42. int MoveLines(double, double, double,
  43. const char*, int, double);
  44. int FlipLines();
  45. int MergeLines();
  46. int BreakLines();
  47. int SnapLines(double);
  48. int ConnectLines(double);
  49. int TypeConvLines();
  50. int ZBulkLabeling(double, double, double, double,
  51. double, double);
  52. int CopyLines(std::vector<int>, const char*);
  53. int MoveVertex(double, double, double,
  54. double, double, double,
  55. const char*, int,
  56. double, double);
  57. int ModifyLineVertex(int, double, double, double,
  58. double);
  59. std::vector<int> SelectLinesByQuery(double, double, double,
  60. double, double, double, bool,
  61. int, int, double);
  62. int CopyCats(std::vector<std::vector<int> >, std::vector<int>);
  63. int GetCategory(int);
  64. std::map<int, std::vector<int> > GetLineCats(int);
  65. int SetLineCats(int, int, std::vector<int>, bool);
  66. std::vector<int> GetLayers();
  67. int Undo(int);
  68. };
  69. #endif /* __DIGIT_H__ */