حجم عناصر الصفحة وموضعها

يوضّح هذا الدليل كيفية تحديد حجم عناصر الصفحة ووضعها باستخدام عمليات تحويل affine مع Google Slides API. للحصول على مقدّمة مفاهيمية حول التحولات المتناسبة، يُرجى الاطّلاع على دليل المفاهيم المتعلّقة بالتحوّلات وعناصر الصفحة.

تحويل العناصر

تتيح لك واجهة برمجة التطبيقات Slides API إعادة وضع العناصر وتغيير حجمها على الصفحة. لإجراء ذلك، حدِّد أولاً نوع التحويل الذي يجب تطبيقه ثم طبِّق هذا التحويل باستخدام الأسلوب presentations.batchUpdate() الذي يحتوي على عنصر واحد أو أكثر UpdatePageElementTransformRequest.

يمكن إجراء عمليات التحويل باستخدام ApplyMode:

  • تعمل عمليات التحويل ABSOLUTE على استبدال مصفوفة التحويل الحالية للعنصر. يتم ضبط أيّ مَعلمات تحذفها من طلب تعديل التحويل على صفر.

  • تتمّ مضاعفة عمليات التحويل RELATIVE بمصفوفة التحويل الحالية للعنصر (يُرجى العِلم أنّ ترتيب الضرب مهم):

$$A' = BA$$

تؤدي عمليات التحويل النسبية إلى نقل عنصر الصفحة أو تغيير حجمه من مكانه. على سبيل المثال، نقل شكل 100 نقطة إلى اليسار أو تدويره 40 درجة. تتخلّص عمليات التحويل المطلقة من معلومات الموضع الحالي ودرجة التكبير/التصغير، على سبيل المثال، نقل شكل إلى وسط الصفحة أو تكبيره ليصبح بعرض معيّن.

يمكن عادةً التعبير عن عمليات التحويل المعقدة على أنّها تسلسل من عمليات التحويل البسيطة. يمكن أن يؤدي احتساب التحويل مسبقًا إلى تقليل الوقت المستغرَق في العمليات الحسابية غير الضرورية، وذلك من خلال دمج عمليات تحويل متعددة باستخدام ضرب المصفوفات.

بالنسبة إلى بعض العمليات، يجب معرفة مَعلمات التحويل الحالية للعنصر. إذا لم تكن لديك هذه القيم، يمكنك استردادها باستخدام الأسلوب presentations.pages.get().

ترجمة

النقل هو إجراء نقل عنصر صفحة إلى موضع جديد في الصفحة نفسها. تنقل الترجمات المطلقة العنصر إلى نقطة معيّنة، بينما تنقل الترجمات النسبية العنصر مسافة معيّنة.

يكون شكل مصفوفة التحويل الأساسية للترجمة على النحو التالي:

$$T=\begin{bmatrix} 1 & 0 & translate\_x\\ 0 & 1 & translate\_y\\ 0 & 0 & 1 \end{bmatrix}$$

عند استخدام UpdatePageElementTransformRequest لترجمة عنصر (بدون تغيير حجمه أو تمزّقه أو اتجاهه)، يمكنك استخدام إحدى البنى التالية لAffineTransform:

// Absolute translation:
{
  'transform': {
    'scaleX':  current scaleX value,
    'scaleY':  current scaleY value,
    'shearX':  current shearX value,
    'shearY':  current shearY value,
    'translateX': X coordinate to move to,
    'translateY': Y coordinate to move to,
    'unit': 'EMU' // or 'PT'
  }
}

// Relative translation (scaling must also be provided to avoid a matrix multiplication error):
{
  'transform': {
    'scaleX':  1,
    'scaleY':  1,
    'translateX': X coordinate to move by,
    'translateY': Y coordinate to move by,
    'unit': 'EMU' // or 'PT'
  }
}

مقياس

تغيير الحجم هو تمديد عنصر أو تضييق حجمه على طول محوري X أو Y لتغيير حجمه. يكون شكل مصفوفة التحويل الأساسية للتوسيع على النحو التالي:

$$S=\begin{bmatrix} scale\_x & 0 & 0\\ 0 & scale\_y & 0\\ 0 & 0 & 1 \end{bmatrix}$$

يمكنك استخدام شكل المصفوفة هذا مباشرةً كتحويل RELATIVE لتغيير حجم العنصر، ولكن يمكن أن يؤثر ذلك أيضًا في القص والترجمة المعروضَين للعنصر. لتكبير العنصر بدون التأثير في تمزّقه أو نقله، بدِّل إلى إطار مرجعي للعنصر.

تدوير

تعمل عمليات التحويل الدوراني على تدوير عنصر الصفحة حول نقطة معيّنة باستخدام مَعلمتَي التكبير والتصغير والانحراف. تتّخذ مصفوفة التحويل الأساسية للتدوير الشكل التالي، حيث يتم قياس زاوية التدوير (بالراديان) من محور X، مع التحرك باتجاه عقارب الساعة:

$$R=\begin{bmatrix} cos(\theta) & sin(\theta) & 0\\ -sin(\theta) & cos(\theta) & 0\\ 0 & 0 & 1 \end{bmatrix}$$

كما هو الحال مع التكبير/التصغير، يمكنك استخدام نموذج المصفوفة هذا مباشرةً كتحويل RELATIVE لتدوير عنصر، ولكن يؤدي ذلك إلى تدوير العنصر حول نقطة الأصل للصفحة. لتدوير العنصر حول مركزه أو نقطة مختلفة، انتقِل إلى إطار مرجعي لهذا العنصر.

انعكاس الإضاءة

تعكس ميزة "الانعكاس" عنصرًا على طول خط أو محور معيّن. تتضمّن مصفوفة التحويل الأساسية للانعكاس على محورَي x و y الشكلَين التاليَين:

$$F_x=\begin{bmatrix} 1 & 0 & 0\\ 0 & -1 & 0\\ 0 & 0 & 1\\ \end{bmatrix}\qquad\qquad F_y=\begin{bmatrix} -1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1\\ \end{bmatrix}$$

كما هو الحال مع التكبير/التصغير، يمكنك استخدام نموذج المصفوفة هذا مباشرةً كتحويل RELATIVE لعكس عنصر، ولكن يؤدي ذلك إلى ترجمة العنصر أيضًا. لعكس العنصر بدون أي ترجمة، بدِّل إلى إطار مرجع العنصر.

إطارات مرجعية للعناصر

يؤدي تطبيق عملية تحويل أساسية للتصغير أو الدوران أو الانعكاس مباشرةً على عنصر الصفحة إلى إجراء عملية تحويل في الإطار المرجعي للصفحة. على سبيل المثال، يؤدي الالتفاف الأساسي إلى تدوير العنصر حول نقطة أصل الصفحة (الجانب العلوي الأيمن ). ومع ذلك، يمكنك العمل في الإطار المرجعي للعنصر، مثلاً لتحريك عنصر حول نقطة مركزه.

لتحويل عنصر ضمن إطار مرجعي خاص به، احطِط العنصر بين عمليتين أخريين للتحويل: عملية تحويل سابقة T1 تنقل مركز العنصر إلى منشأ الصفحة، وعملية تحويل تالية T2 تنقل العنصر مرة أخرى إلى موضعه الأصلي. يمكن التعبير عن العملية الكاملة على شكل حاصل ضرب في مصفوفة:

$$A' = T2 \times B \times T1 \times A$$

يمكنك أيضًا التبديل إلى أطر مرجعية أخرى، عن طريق ترجمة نقاط مختلفة إلى المصدر بدلاً من ذلك. وتصبح هذه النقاط مركز الإطار المرجعي الجديد.

من الممكن تنفيذ كلّ من عمليات التحويل هذه بشكلٍ فردي كطلبات RELATIVE تحويل متسلسلة. من الأفضل احتساب A' أعلاه مسبقًا باستخدام عمليات ضرب المصفوفات وتطبيق النتيجة كتحويل ABSOLUTE واحد. بدلاً من ذلك، يمكنك احتساب ناتج T2 * B * T1 مسبقًا وتطبيقه على سبيل المثال كتحويل RELATIVE واحد. وهما أكثر فعالية من حيث عمليات واجهة برمجة التطبيقات مقارنةً بإرسال طلبات التحويل بشكلٍ فردي.

القيود

لا تتوافق بعض حقول الحجم والموضع مع بعض أنواع عناصر الصفحة. يلخّص الجدول التالي توافق عناصر معيّنة للصفحة مع حقول الحجم والموضع:

الحقل شكل فيديو جدول
الترجمة
المقياس لا**
القص لا لا

لتعديل سمات صفوف وأعمدة الجدول، استخدِم رمزَي UpdateTableRowPropertiesRequest و UpdateTableColumnPropertiesRequest.

قد تؤدي جميع حقول الحجم والموضع إلى نتائج غير متوقّعة إذا كان عنصر الصفحة يتضمّن تمويهًا. وتخضع جميع القيود للتغيير. للاطّلاع على المعلومات الراهنة، يُرجى الاطّلاع على Google Slides API.

القيم التي تمت إعادة تحليلها

عند إنشاء عنصر صفحة، يمكنك تحديد حجم وتحويله لتوفير نتيجة مرئية معيّنة. ومع ذلك، قد تستبدل واجهة برمجة التطبيقات Slides API القيم التي قدّمتها بقيم أخرى تؤدي إلى المظهر المرئي نفسه. بشكلٍ عام، إذا كتبت حجمًا باستخدام واجهة برمجة التطبيقات، لا يمكننا ضمان عرض الحجم نفسه. ومع ذلك، من المفترض أن تحصل على النتائج نفسها إذا أخذت عملية التحويل في الاعتبار.