รูปแบบไฟล์และโมเดลเอกสาร
การจัดการไฟล์ของ Larrygram แบ่งเป็นสองชั้น larrygram-vsdx อ่านและเขียนไฟล์ ส่วน larrygram-model เก็บภาพวาดไว้ในหน่วยความจำ โมเดลไม่รู้จัก XML หรือไฟล์ zip เลย รูปแบบไฟล์อื่น (เช่น ตัวนำเข้า .vsd ที่อยู่ในแผน) จึงโหลดเข้าสู่โมเดลเดียวกันได้
ชั้นแพ็กเกจ
หัวข้อที่มีชื่อว่า “ชั้นแพ็กเกจ”ไฟล์ .vsdx, .vssx หรือ .vstx คือแพ็กเกจ OPC ซึ่งเป็นคอนเทนเนอร์ zip ที่มี [Content_Types].xml ส่วนความสัมพันธ์ (relationship part) และส่วน XML ตามที่อธิบายไว้ในข้อกำหนด [MS-VSDX] ที่ Microsoft เผยแพร่ ชั้นแพ็กเกจจัดการเฉพาะตัวคอนเทนเนอร์ และบังคับขีดจำกัดที่เข้มงวด เพื่อไม่ให้ไฟล์ที่ผิดรูปแบบหรือไฟล์ที่ประสงค์ร้ายใช้หน่วยความจำจนหมด:
| ขีดจำกัด | ป้องกัน |
|---|---|
| จำนวนรายการใน zip | แพ็กเกจที่มีจำนวนส่วนมหาศาล |
| ขนาดก่อนบีบอัดของแต่ละส่วนและของทั้งแพ็กเกจ | อินพุตที่ใหญ่เกินไป |
| อัตราส่วนการบีบอัดของแต่ละรายการ | zip bomb |
| ความลึกของการซ้อน XML และจำนวนแอตทริบิวต์ต่อองค์ประกอบ | XML ที่ผิดปกติ |
โมเดลเอกสาร
หัวข้อที่มีชื่อว่า “โมเดลเอกสาร”| เอนทิตี | เก็บอะไร |
|---|---|
| Document | ประเภท (ภาพวาด สเตนซิล หรือเทมเพลต) คุณสมบัติของเอกสาร หน้า มาสเตอร์ สไตล์ชีต |
| Page | ชีตของหน้า (page sheet) และรูปร่าง |
| Master | นิยามรูปร่างที่นำกลับมาใช้ซ้ำได้จากสเตนซิล |
| Shape | ส่วน (section) แถว และเซลล์ของ ShapeSheet รูปทรง ข้อความ และรูปร่างลูกสำหรับกลุ่ม |
| Stylesheet | สไตล์เส้น การเติมสี และข้อความที่รูปร่างสืบทอด |
| Cell | สูตร ค่าที่แคชไว้ และหน่วย ซึ่งเก็บแยกกัน |
ทุกเอนทิตีเก็บตัวระบุของ Visio เองไว้ (ID, NameU, Name) การสืบทอดจากมาสเตอร์และสไตล์ชีตจะถูกหาค่าเมื่อต้องการใช้ค่านั้น และไม่ถูกยุบรวมตอนโหลด ไฟล์ที่บันทึกจึงยังคงโครงสร้างการสืบทอดไว้
การอ่านแล้วเขียนกลับแบบไม่สูญเสียข้อมูล
หัวข้อที่มีชื่อว่า “การอ่านแล้วเขียนกลับแบบไม่สูญเสียข้อมูล”Larrygram แมปรูปแบบไฟล์เข้าสู่โมเดลเพียงบางส่วน ส่วนที่เหลือทั้งหมดจะถูกเก็บไว้:
- ส่วน (part) ที่ไม่รู้จัก ยังอยู่ในแพ็กเกจ และถูกคัดลอกทีละไบต์เมื่อบันทึก
- แอตทริบิวต์และองค์ประกอบลูกที่ไม่รู้จัก ขององค์ประกอบที่อยู่ในโมเดล จะถูกเก็บไว้บนเอนทิตีของโมเดลและเขียนกลับ
- องค์ประกอบที่ไม่รู้จัก ภายในส่วนที่รองรับ จะถูกเก็บไว้บนองค์ประกอบบรรพบุรุษที่ใกล้ที่สุดซึ่งอยู่ในโมเดล
การอ่านแล้วเขียนกลับไม่ได้ให้ผลที่เหมือนเดิมทุกไบต์ (ตัวเขียนสร้างส่วนความสัมพันธ์และลำดับแอตทริบิวต์ในแบบของตัวเอง) แต่ได้ XML ที่ มีความหมายเทียบเท่ากัน ทุกไฟล์ในชุดไฟล์ทดสอบของโครงการผ่านการตรวจสอบนี้
สูตร ShapeSheet กำลังพัฒนา
หัวข้อที่มีชื่อว่า “สูตร ShapeSheet ”แต่ละเซลล์เก็บสูตรเป็นข้อความไว้คู่กับค่าที่แคชไว้ crate larrygram-shapesheet แยกวิเคราะห์ พิมพ์ และประเมินผลสูตร โดยแยกวิเคราะห์ได้ 976 จาก 994 สูตรที่ไม่ซ้ำกันในชุดไฟล์ทดสอบ และพิมพ์สูตรที่แยกวิเคราะห์ได้ทุกสูตรกลับออกมาได้โดยไม่เปลี่ยนแปลง มีฟังก์ชัน 42 ฟังก์ชัน หาค่าการอ้างอิงข้ามรูปร่าง มาสเตอร์ หน้า และสไตล์ได้ และคำนวณใหม่แบบเพิ่มทีละส่วนพร้อมตรวจจับการอ้างอิงวนซ้ำ แต่ยังไม่ได้เชื่อมต่อกับการแก้ไข การเปิด หรือการบันทึก
การเรนเดอร์
หัวข้อที่มีชื่อว่า “การเรนเดอร์”larrygram-render สร้างฉาก (scene) จากค่าเซลล์ที่แคชไว้ แล้ววาดเป็น PNG (ด้วย tiny-skia) หรือ SVG ข้อความจะถูกจัดรูปด้วยฟอนต์ Carlito และ Selawik ที่รวมมากับแอป
หน้านี้แปลจากภาษาอังกฤษ หากพบส่วนที่อ่านแล้วไม่ถูกต้อง แจ้งให้เราทราบ