पेज एलिमेंट का साइज़ और पोज़िशन

इस गाइड में बताया गया है कि Google Slides API की मदद से, अफ़ाइन ट्रांसफ़ॉर्मेशन का इस्तेमाल करके, पेज एलिमेंट का साइज़ और पोज़िशन कैसे तय की जाती है. ऐफ़ाइन ट्रांसफ़ॉर्म के बारे में जानकारी पाने के लिए, ट्रांसफ़ॉर्म और पेज एलिमेंट के कॉन्सेप्ट की गाइड देखें.

एलिमेंट बदलना

Slides API की मदद से, पेज पर एलिमेंट को फिर से पोज़िशन किया जा सकता है और उनका स्केल बदला जा सकता है. ऐसा करने के लिए, सबसे पहले यह तय करें कि किस तरह का ट्रांसफ़ॉर्मेशन लागू करना है. इसके बाद, एक या एक से ज़्यादा UpdatePageElementTransformRequest एलिमेंट वाले presentations.batchUpdate() तरीके का इस्तेमाल करके, उस ट्रांसफ़ॉर्मेशन को लागू करें.

ट्रांसफ़ॉर्म करने के लिए, 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 ट्रांसफ़ॉर्म के तौर पर किया जा सकता है. हालांकि, इससे एलिमेंट को पेज के ऑरिजिन के आस-पास घुमाया जाता है. एलिमेंट को उसके केंद्र या किसी दूसरे पॉइंट के आस-पास घुमाने के लिए, उस एलिमेंट के रेफ़रंस फ़्रेम पर शिफ़्ट करें.

रिफ़्लेक्शन

रिफ़्लेक्शन, किसी एलिमेंट को किसी खास लाइन या ऐक्सिस पर दिखाता है. एक्स- और वाई-ऐक्सिस के रिफ़्लेक्शन ट्रांसफ़ॉर्म मैट्रिक के ये फ़ॉर्म होते हैं:

$$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 ट्रांसफ़ॉर्म के तौर पर लागू करें. एपीआई के काम करने के तरीके के हिसाब से, ये दोनों तरीके, ट्रांसफ़ॉर्म करने के अनुरोधों को अलग-अलग भेजने के मुकाबले ज़्यादा असरदार हैं.

सीमाएं

साइज़ और पोज़िशनिंग वाले कुछ फ़ील्ड, पेज के कुछ एलिमेंट के साथ काम नहीं करते. नीचे दी गई टेबल में, साइज़ और पोज़िशन फ़ील्ड के साथ कुछ पेज एलिमेंट के काम करने के बारे में खास जानकारी दी गई है:

फ़ील्ड आकार वीडियो तालिका
Translation
स्केल नहीं**
शिअर नहीं नहीं

टेबल की पंक्ति और कॉलम के डाइमेंशन अपडेट करने के लिए, UpdateTableRowPropertiesRequest और UpdateTableColumnPropertiesRequest का इस्तेमाल करें.

अगर पेज एलिमेंट में शियरिंग है, तो साइज़ और पोज़िशन वाले सभी फ़ील्ड से अनचाहे नतीजे मिल सकते हैं. सभी सीमाओं में बदलाव किया जा सकता है. मौजूदा जानकारी के लिए, Google Slides API देखें.

फिर से तैयार की गई वैल्यू

पेज एलिमेंट बनाते समय, उसका साइज़ तय किया जा सकता है और उसे बदला जा सकता है, ताकि कोई खास विज़ुअल नतीजा मिल सके. हालांकि, Slides API आपकी दी गई वैल्यू को ऐसी वैल्यू से बदल सकता है जिनसे वही विज़ुअल दिखे. आम तौर पर, अगर एपीआई का इस्तेमाल करके कोई साइज़ लिखा जाता है, तो यह ज़रूरी नहीं है कि आपको वही साइज़ दिखे. हालांकि, ट्रांसफ़ॉर्म को ध्यान में रखकर, आपको वही नतीजे मिलेंगे.