סמנטיקות רינדור מתקדמות

רינדור עמוד טעון משמר על מצב Form XObject ‏מקונן תוך החלת קבוצות transparency, מסכות רכות, פרוצדורות glyph ‏מסוג Type 3, ופענוח אזורי תמונה גלויים לפי רזולוציה

קווי מתאר מקווקוים

עיבוד נתיבים native שומר על מערכי dash מלאים ועל הפאזה שלהם, לרבות מערכים באורך אי-זוגי, אורכים שבריים וקווים מקווקוים באורך אפס עם קצוות עגולים או מרובעים; תבנית ה-dash מתחילה מחדש בכל תת-נתיב

קווי מתאר בצבע אחיד וקליפים של קווי מתאר בתבנית מעבר-צבע חולקים נתיב גיאומטריית dash מתוחם אחד, שומרים על חיבורים בתוך קטעי צביעה רציפים ומחברים קטעי צביעה דרך נקודת ההתחלה של מתאר סגור

אורכי dash שומרים על סקלת הטרנספורמציה הנוכחית הממוצעת של ה-renderer, בעוד פיצול עקומות משתמש בשיטוח adaptive במרחב המכשיר; צביעת fill ו-clipping ממתין ממשיכים להשתמש בנתיב המקורי שלא פוצל

קבוצות transparency

מסכות רכות

Transfer ופונקציות sampled

/TR2 מקדם את /TR, פונקציה יחידה חלה על כל ערוץ פלט RGB, ומערך של ארבע פונקציות מפעיל את שלוש הרשומות הראשונות שלו באופן עצמאי תוך שימור רשומות /Identity ו-/Default

החלת מצב transfer ‏חדש מחליפה כל ערוץ אטומית, כך שרשומות identity ‏אינן יכולות לרשת ערכי אחזור ממצב גרפי קודם

פונקציות sampled ‏מסוג Type 0 ‏תומכות בממד קלט ופלט אחד עד ארבעה, ערכי /BitsPerSample ‏1, 2, 4, 8, 12, 16, 24 ‏ו-32, מיפויי /Encode ‏הפוכים או קדימה, טווחי /Decode ‏עצמאיים, אינטרפולציה multilinear, אינטרפולציה קובית רב-ממדית וקוולים קוביים טבעיים עבור נתוני /Order 3 ‏חד-ממדיים

בתי דגימה מפוענחים, ממדים מאומתים, מיפויים ונגזרות קוביות חולקים LRU ‏של שמונה רשומות capped ‏ב-64 MiB לכל Thread רינדור, בעוד פונקציות גדולות מדי או פגומות נכשלות מבלי להחליף חלקית את טבלת האחזור של transfer ‏הפעיל

מסכי halftone

מערכי threshold ‏מסוג Type 6, Type 10 ‏ו-Type 16 ‏מתבצעים ישירות עם אורכים מדויקים מפוענחים, threshold ‏של 16 סיביות big-endian, השוואת רכיבים אדיטיבית ופסים תקופתיים קומפקטיים הנמנעים מהרחבת מסכים זוויתיים או דו-מלבניים

מילוני Type 5 ‏בוחרים מסכי /Red, /Green ו-/Blue ‏עצמאיים עם פל-חזרה של /Gray ‏ו-/Default ‏נדרשים, בעוד כל מסך נבחר יכול לעקוף את פונקציית ה-transfer ‏הגלובלית

בתי threshold ‏מאומתים והגיאומטריה המנורמלת שלהם חולקים LRU ‏של 64 רשומות capped ‏ב-64 MiB לכל renderer, וממדים פגומים, הקצאות גדולות מדי, מילוני Type 5 ‏מקוננים או אי-התאמות באורך המטען מותירים את מצב המסך הפעיל המלא במצב continuous-tone

גליפים מסוג Type 3

CharProcs ‏מסוג Type 3 ‏רצים דרך מנוע אופרטורי התוכן המלא עם היקף המשאבים הנוכחי של מילון הגופן, תמיכת Form, קליפינג, תמונות, דוגמאות ורקורסיה חסומה

d0 ‏ו-d1 מספקים מטריקות glyph ‏בעוד פרוצדורת d1 שומרת על הצבע שנבחר בידי הקורא כפי שדורש מודל ההדמיה של PDF

CharProcs חוזרים עושים שימוש חוזר ברשימות תצוגה מפוענחות וממורקזות כשהגופן, ה-glyph, מטריצת המכשיר הלינארית ומצב הצבע תואמים; התרגום נשאר דינמי כך שתווים חוזרים במיקומים שונים חולקים רשומה אחת

ה-LRU ‏לכל renderer שומר על 256 רשומות לכל היותר ו-131,072 token ‏, עוקף כל CharProc ‏מעל 16,384 token ‏, ומדווח על התנהגותו דרך GetLastType3GlyphCacheStats

אזורי תמונה מקוטעים ומוקטנים

תמונות XObject ‏מיושרות לציר מבקשות רק גבולות מקור גלויים ומעבירות את גודל הפיקסל הגלוי של המכשיר אל נתיב הפענוח

תמונה עם מסכה רכה מפוענחת במלואה בגודל שבו היא מצוירת, והמסכה שלה באותו גודל, כך שהמסכה נשארת מיושרת עם התמונה בעוד החתיכה מגבילה את מה שנצבע; מסכות JPEG משתמשות במפענח ה-DCT בגודל מקוטן

בעת רינדור, אזור מפוענח שגודלו לפחות כפולי מהגודל המצויר בשני הכיוון מוקטן לבדיוק לגודל המצויר באמצעות ממוצע שטחי לפני שיוצר או נשמר במטמון; תמונה גדולה שמצוירת קטנה נכנסת אז למטמון הפענוח, כך שקבוצה שמצוירת פעמיים או עמוד חוזר משתמשים בו שוב, והמסכה הרכה שלו מוחלת פיקסל מול פיקסל בגודל הזה. מסכות תמונת-stencil שומרות על הרזולוציה המלאה שלהן, ושיטות פענוח האזורים הציבוריות מחזירות את הגדלים המתועדים שלהן

JPEG 2000 ‏משלב את ממשק האזור המקורי של ה-decoder ‏עם רמת רזולוציה של חזקה-בשתיים שנבחרה לעמוד בשני ממדי היעד לפני שחזור wavelet ‏והרחבת raster

זרמי codestream ‏של JPEG 2000 ‏הניתנים לכתובת אריחים יכולים גם לפענח אריח מאומת אחד ישירות דרך THPDFJpeg2000Decoder.LoadTileFromByteArray, כשמטא-נתוני רשת האריחים ומגבלות בתי הפלט חשופים על ידי ה-decoder

כשאזור מקורי מצטלב עם מספר אריחים עצמאיים, LoadRegionFromByteArrayParallel מקצה מצב OpenJPEG ‏פרטי לכל עובד ומרכיב rasters ‏מושלמים בסדר row-major ‏דטרמיניסטי; ביטול, מגבלות פלט ותקציב שיא הזיכרון האפקטיבי יכולים להפסיק את התזמון או לבחור בפלתל הרציף

Region := PDF.DecodeLoadedImageRegion(ImageStream, 128, 64, 640, 480);
try
  Canvas.Draw(0, 0, Region);
finally
  Region.Free;
end;

ממשקי API ‏קשורים