מהו קובץ EMF?
פורמט מטא-קובץ משופר (EMF) מאחסן תמונות גרפיות באופן עצמאי. Metafiles של EMF מורכבים מרשומות באורך משתנה לפי סדר כרונולוגי שיכולים לעבד את התמונה המאוחסנת לאחר ניתוח בכל התקן פלט. רשומות אלה באורך משתנה יכולות להיות הגדרות של אובייקטים סגורים, פקודות לציור ומאפיינים גרפיים קריטיים לעיבוד התמונה במדויק. כאשר מכשיר פותח מטא-קובץ EMF באמצעות סביבת גרפיקה משלו, הפרופורציות, הממדים, הצבעים ושאר המאפיינים הגרפיים של התמונה המקורית נשארים זהים ללא קשר לפלטפורמת המכשיר הנפתח.
היסטוריה קצרה
בשנת 1990, מיקרוסופט עיצבה פורמט קובץ תמונה Windows Metafile (WMF) עבור Microsoft Windows. Windows Metafiles הם פורמטים של 16 סיביות שעשויים להכיל כמה רכיבי מפת סיביות. WMF עשוי להיות מורכב מגרפיקה וקטורית ונועד לשמור על ניידות בין יישומים שונים. בשנת 1993 הכריזה Win32/GDI על ה-Enhanced Metafile (EMF), גרסה חדשה יותר עם גמישות ומדרגיות משופרים. EMF משמש גם כפקודות השפה הגרפית להפעלת מנהלי ההתקן של המדפסת. מיקרוסופט ממליצה כעת על הפורמט המשופר של Metafile (EMF) על פני פורמט Windows (WMF). כאשר Windows XP הוצג, שוחררה גרסת Enhanced Metafile Format Plus (EMF+). גרסה חדשה יותר זו מוצאת את דרכה על ידי סידור קריאות ל-GDI+ API, כמו כן, WMF/EMF מתעדת שיחות ל-GDI. קיימת גרסת gzip דחוסה של EMF המכונה EMZ.
EMF Metafile Format
להלן המרכיבים החיוניים של פורמט המטא-קובץ המשופר:
- EMR_HEADER (גרסה, גודל, רזולוציית התמונה בעת היצירה)
- טבלה לחפצי GDI
- פלטה שמורה (לא חובה)
- רשומות Metafile מסודרות במבנה מערך (הגדרות נכס, אובייקטים מוגדרים, פקודות ציור)
- שיא EMR_EOF (רשומה אחרונה במטא-קובץ EMF)
גרסאות EMF
- מקורי: הגרסה המקורית מציינת את הרשומה הדרושה כדי לשמור על התמונה המקורית ולשמור על חוסר תלות במכשיר שלה. יתר על כן תומך ברשומה המכילה אובייקטים גרפיים ופקודות לציור.
- גרסה 1: הגרסה השנייה של EMF שיפרה את הגמישות ואת עצמאות המכשיר על ידי הוספת הרשומה לפורמט פיקסל והקצאה לשימוש בפקודת OpenGL.
- גרסה 2: הגרסה השלישית שיפרה את הדיוק על ידי הוספת המערכת המטרית למדידת מרחקי פני המכשיר, והותירה את הרשומה ניתנת להרחבה יותר.
רשומות Metafile משופרות
רשומות Metafile מסודרות בצורה של מערך. לרשומות אלה יש מבנה ENHMETARECORD ואורך משתנה. ENHMETARECORD מציין נתונים המגדירים פונקציות GDI ליצירת תמונה באמצעות פורמט מטא-קובץ משופר. מבנה ENHMETAHEADER הוא תמיד הרשומה הראשונה בפורמט הזה. כותרת EMF זו מכילה את המידע הבא.
לכל רשומה של מטא-קובץ משופר יש שני חברים של EMR (מספק את מבנה הבסיס) בהתחלה. האיבר הראשון מזהה את פונקציית GDI (משתמשים בפרמטרים ברשומה) הקובעת את סוג הרשומה ומכונה iType. החבר השני nSize מגדיר את הגודל של כל רשומה. שאר הפרמטרים (אם יש) ונתונים נוספים מסודרים מיד מתחת ל-nSize. מייד לאחר הכותרת עשוי להופיע תיאור טקסט אופציונלי. שם התמונה והמחבר נרשם בתיאור הטקסט הזה. הפלטה שהנוכחות שלה היא אופציה מציינת את הצבעים המשמשים ביצירת מטא-קובץ משופר. הרשומות האחרות משמשות לציון פונקציית GDI שהיא חיונית ביצירת תמונה.
לפחות רשומת EMF אחת צריכה להיות קיימת בכל מטא-קובץ. מידע המעבר מרשומה אחת לאחרת תלוי ברשומות EMF ולכן יש לסדר את הרשומות הללו בצמוד. בכל רשומה נתונה במטא-קובץ מלבד EOF_record, אורך הרשומה הספציפית הזו מגדיר לעבור לרשומה הבאה.
יצירת Metafile משופרת
פונקציית CreateEnhMetaFile משמשת ליצירת מטא-קובץ משופר. ארגומנטים של פונקציה זו משמשים למימדים ואחסון תמונה בדיסק/זיכרון. יתרה מזאת, פונקציה זו דורשת את הממד של המכשיר שבו הופיעה התמונה הראשונה (התקן המיועד) ואת ההקשר של התקן הייחוס (DC). אז הארגומנטים לטיפול ב-DC הזה חייבים לספק בעת קריאה לפונקציה CreateEnhMetaFile. תחביר הפונקציה הוא כדלקמן:
HDC CreateEnhMetaFileExample(
HDC hdc,
LPCSTR lptoFilename,
const OVAL *lprc,
LPCSTR lpDesc
);
HDC: ידית להתקן ייחוס.
lptoFilename: מצביע לשם הקובץ.
lprc: מצביע למבנה סגלגל מציין את מידות התמונה במ"מ.
lpDesc: מצביע למחרוזת של כותרת התמונה ושם היישום שיצרו את התמונה.
פעולות מטאפיל משופרות
להלן עבודות שניתן לבצע באמצעות הידית ל-metafil משופר.
- הצג וערוך עבור התמונה המאוחסנת.
- הפקת עותקים משופרים של מטאפילים.
- אחזר עותק של כותרת EMF, תיאור אופציונלי וגרסה בינארית של מטא-קובץ משופר
- שחזר את הצבעים בפלטה.
אובייקטים גרפיים
בפעולות ציור וצביעה, ניתן ליצור אובייקטים גרפיים על ידי רשומות של יצירת אובייקטים וניתן לשמור אותם לשימוש נוסף. רשומת ‘EMR_SELECTOBJECT’ יכולה לאחזר אובייקטים גרפיים אלה באמצעות ההקשר של מכשיר ההשמעה. עטים, פלטות, מברשות, מרחבי צבע, גופנים וחפצי מלאי הם כמה סוגי אובייקטים הניתנים לשימוש חוזר.
הזמנת בתים
פורמט Little-endian משמש לאחסון נתונים ברשומות מטא-פילי.
גרסה
פורמט הקובץ EMF עודכן פעמיים. הגירסאות שהשתנו הן מקוריות, הרחבה 1 והרחבה 2. לגרסאות המורחבות יש תנאי לרשומות OpenGL ומתאר אופציונלי לפורמט פיקסל פנימי. נוסף מתקן מדידה במיליליטר למידות המוצגות.