mod.rs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. use std::fmt::Display;
  2. use binrw::{BinRead, BinWrite};
  3. use crate::{
  4. field_of::FieldOf,
  5. types::{Field, ObjectType, Point, WString, F64, U16, U32},
  6. };
  7. use self::{circle::Circle, ellipse::Ellipse, line::Lines, polygon::Polygon, rectangle::Rectangle};
  8. pub mod circle;
  9. pub mod ellipse;
  10. pub mod hatch;
  11. pub mod line;
  12. pub mod polygon;
  13. pub mod rectangle;
  14. #[derive(BinRead, BinWrite, Debug)]
  15. #[brw(magic(17u32))]
  16. pub struct ObjBase {
  17. pub pen: U32,
  18. pub obj_type: FieldOf<ObjectType>,
  19. pub flags: U16,
  20. pub name: WString,
  21. pub count: U32,
  22. _unknown_1: Field,
  23. pub io_control_enable_mask: U16,
  24. pub io_control_disable_mask: U16,
  25. _unknown_2: [Field; 5],
  26. pub origin: FieldOf<Point>,
  27. pub z: F64,
  28. pub a: F64,
  29. _unknown_3: Field,
  30. }
  31. impl Display for ObjBase {
  32. fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  33. f.write_fmt(format_args!("[{}]", self.obj_type))
  34. }
  35. }
  36. #[derive(BinRead, BinWrite, Debug)]
  37. pub enum Object {
  38. #[brw(magic = 1u32)]
  39. Curve(Lines),
  40. #[brw(magic = 2u32)]
  41. Point(Lines),
  42. #[brw(magic = 3u32)]
  43. Rectangle(Rectangle),
  44. #[brw(magic = 4u32)]
  45. Circle(Circle),
  46. #[brw(magic = 5u32)]
  47. Ellipse(Ellipse),
  48. #[brw(magic = 6u32)]
  49. Polygon(Polygon),
  50. // #[brw(magic = 32u32)]
  51. // Hatch(Hatch),
  52. }
  53. impl Display for Object {
  54. fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  55. match self {
  56. Object::Curve(x) => write!(f, "{}", x),
  57. Object::Point(x) => write!(f, "{}", x),
  58. Object::Rectangle(x) => write!(f, "{}", x),
  59. Object::Circle(x) => write!(f, "{}", x),
  60. Object::Ellipse(x) => write!(f, "{}", x),
  61. Object::Polygon(x) => write!(f, "{}", x),
  62. }
  63. }
  64. }