ข้ามไปยังเนื้อหา

รูปแบบไฟล์และโมเดลเอกสาร

larrygram-vsdx · larrygram-model

การจัดการไฟล์ของ 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 แมปรูปแบบไฟล์เข้าสู่โมเดลเพียงบางส่วน ส่วนที่เหลือทั้งหมดจะถูกเก็บไว้:

  1. ส่วน (part) ที่ไม่รู้จัก ยังอยู่ในแพ็กเกจ และถูกคัดลอกทีละไบต์เมื่อบันทึก
  2. แอตทริบิวต์และองค์ประกอบลูกที่ไม่รู้จัก ขององค์ประกอบที่อยู่ในโมเดล จะถูกเก็บไว้บนเอนทิตีของโมเดลและเขียนกลับ
  3. องค์ประกอบที่ไม่รู้จัก ภายในส่วนที่รองรับ จะถูกเก็บไว้บนองค์ประกอบบรรพบุรุษที่ใกล้ที่สุดซึ่งอยู่ในโมเดล

การอ่านแล้วเขียนกลับไม่ได้ให้ผลที่เหมือนเดิมทุกไบต์ (ตัวเขียนสร้างส่วนความสัมพันธ์และลำดับแอตทริบิวต์ในแบบของตัวเอง) แต่ได้ XML ที่ มีความหมายเทียบเท่ากัน ทุกไฟล์ในชุดไฟล์ทดสอบของโครงการผ่านการตรวจสอบนี้

แต่ละเซลล์เก็บสูตรเป็นข้อความไว้คู่กับค่าที่แคชไว้ crate larrygram-shapesheet แยกวิเคราะห์ พิมพ์ และประเมินผลสูตร โดยแยกวิเคราะห์ได้ 976 จาก 994 สูตรที่ไม่ซ้ำกันในชุดไฟล์ทดสอบ และพิมพ์สูตรที่แยกวิเคราะห์ได้ทุกสูตรกลับออกมาได้โดยไม่เปลี่ยนแปลง มีฟังก์ชัน 42 ฟังก์ชัน หาค่าการอ้างอิงข้ามรูปร่าง มาสเตอร์ หน้า และสไตล์ได้ และคำนวณใหม่แบบเพิ่มทีละส่วนพร้อมตรวจจับการอ้างอิงวนซ้ำ แต่ยังไม่ได้เชื่อมต่อกับการแก้ไข การเปิด หรือการบันทึก

larrygram-render สร้างฉาก (scene) จากค่าเซลล์ที่แคชไว้ แล้ววาดเป็น PNG (ด้วย tiny-skia) หรือ SVG ข้อความจะถูกจัดรูปด้วยฟอนต์ Carlito และ Selawik ที่รวมมากับแอป

หน้านี้แปลจากภาษาอังกฤษ หากพบส่วนที่อ่านแล้วไม่ถูกต้อง แจ้งให้เราทราบ