इस गाइड में, Google Slides API की मदद से अफ़ाइन ट्रांसफ़ॉर्म का इस्तेमाल करके, पेज के एलिमेंट का साइज़ तय करने और उन्हें पोज़िशन करने का तरीका बताया गया है. अफ़ाइन ट्रांसफ़ॉर्म के बारे में जानकारी पाने के लिए, ट्रांसफ़ॉर्म और पेज के एलिमेंट के कॉन्सेप्ट वाली गाइड देखें.
एलिमेंट ट्रांसफ़ॉर्म करना
Slides API की मदद से, किसी पेज पर मौजूद एलिमेंट की पोज़िशन बदली जा सकती है और उनका साइज़ बढ़ाया या घटाया जा सकता है. इसके लिए, सबसे पहले यह तय करें कि किस तरह का ट्रांसफ़ॉर्मेशन लागू करना है. इसके बाद,
presentations.batchUpdate()
तरीके का इस्तेमाल करके, वह ट्रांसफ़ॉर्म लागू करें. इस तरीके में, एक या उससे ज़्यादा
UpdatePageElementTransformRequest
एलिमेंट शामिल होते हैं.
ApplyMode का इस्तेमाल करके, ट्रांसफ़ॉर्मेशन किए जा सकते हैं:
ABSOLUTEट्रांसफ़ॉर्म, एलिमेंट के मौजूदा ट्रांसफ़ॉर्मेशन मैट्रिक्स को बदल देते हैं. ट्रांसफ़ॉर्म अपडेट करने के अनुरोध में, जिन पैरामीटर को शामिल नहीं किया जाता उनकी वैल्यू शून्य पर सेट हो जाती है.RELATIVEट्रांसफ़ॉर्म, एलिमेंट के मौजूदा ट्रांसफ़ॉर्मेशन मैट्रिक्स से गुणा किए जाते हैं. हालांकि, गुणा करने का क्रम मायने रखता है:
रिलेटिव ट्रांसफ़ॉर्म, पेज के एलिमेंट को उसकी मौजूदा जगह से ही मूव या स्केल करते हैं. उदाहरण के लिए, किसी आकार को बाईं ओर 100 पॉइंट मूव करना या उसे 40 डिग्री घुमाना. एब्सॉल्यूट ट्रांसफ़ॉर्म, मौजूदा पोज़िशन और स्केल की जानकारी को हटा देते हैं. उदाहरण के लिए, किसी आकार को पेज के बीच में ले जाना या उसे किसी खास चौड़ाई तक स्केल करना.
आम तौर पर, मुश्किल ट्रांसफ़ॉर्मेशन को आसान ट्रांसफ़ॉर्मेशन की सीरीज़ के तौर पर दिखाया जा सकता है. ट्रांसफ़ॉर्म की पहले से गणना करने पर—मैट्रिक्स गुणन का इस्तेमाल करके, कई ट्रांसफ़ॉर्मेशन को एक साथ लागू करने पर—अक्सर ओवरहेड कम किया जा सकता है.
कुछ कार्रवाइयों के लिए, आपको यह पता होना चाहिए कि किसी एलिमेंट के मौजूदा ट्रांसफ़ॉर्म पैरामीटर क्या हैं. अगर आपके पास ये वैल्यू नहीं हैं, तो इन्हें
presentations.pages.get()
तरीके का इस्तेमाल करके वापस पाया जा सकता है.
ट्रांसलेशन
ट्रांसलेशन, पेज के किसी एलिमेंट को उसी पेज पर किसी नई पोज़िशन पर ले जाने की कार्रवाई है. एब्सॉल्यूट ट्रांसलेशन, एलिमेंट को किसी खास पॉइंट पर ले जाते हैं. वहीं, रिलेटिव ट्रांसलेशन, एलिमेंट को किसी खास दूरी पर ले जाते हैं.
बेसिक ट्रांसलेशन ट्रांसफ़ॉर्म मैट्रिक्स का फ़ॉर्मैट यह होता है:
किसी एलिमेंट को ट्रांसलेट करने के लिए, 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 डाइमेंशन के हिसाब से स्ट्रेच या स्क्वीज़ करने की कार्रवाई है. बेसिक स्केलिंग ट्रांसफ़ॉर्म मैट्रिक्स का फ़ॉर्मैट यह होता है:
किसी एलिमेंट का साइज़ बदलने के लिए, इस मैट्रिक्स फ़ॉर्म को सीधे RELATIVE ट्रांसफ़ॉर्म के तौर पर इस्तेमाल किया जा सकता है. हालांकि, इससे एलिमेंट के रेंडर किए गए शियर और ट्रांसलेशन पर भी असर पड़ सकता है.
एलिमेंट के शियर या ट्रांसलेशन पर असर डाले बिना, उसे स्केल करने के लिए, उसके
एलिमेंट रेफ़रंस फ़्रेम पर शिफ़्ट करें.
रोटेशन
रोटेशन ट्रांसफ़ॉर्म, स्केलिंग और शियर पैरामीटर का इस्तेमाल करके, किसी पेज एलिमेंट को किसी पॉइंट के चारों ओर घुमाते हैं. बेसिक रोटेशन ट्रांसफ़ॉर्म मैट्रिक्स का फ़ॉर्मैट यह होता है. इसमें, रोटेशन के ऐंगल (रेडियन में) को X-ऐक्सिस से मापा जाता है. साथ ही, यह एंटी-क्लॉकवाइज़ दिशा में घूमता है:
स्केलिंग की तरह, किसी एलिमेंट को घुमाने के लिए, इस मैट्रिक्स फ़ॉर्म को सीधे RELATIVE ट्रांसफ़ॉर्म के तौर पर इस्तेमाल किया जा सकता है. हालांकि, इससे एलिमेंट, पेज के ऑरिजिन के चारों ओर घूमता है. एलिमेंट को उसके बीच में मौजूद पॉइंट या किसी दूसरे पॉइंट के चारों ओर घुमाने के लिए,
उस एलिमेंट के रेफ़रंस
फ़्रेम पर शिफ़्ट करें.
रिफ़्लेक्शन
रिफ़्लेक्शन, किसी एलिमेंट को किसी खास लाइन या ऐक्सिस के चारों ओर मिरर करता है. बेसिक x-ऐक्सिस और y-ऐक्सिस रिफ़्लेक्शन ट्रांसफ़ॉर्म मैट्रिक्स का फ़ॉर्मैट यह होता है:
स्केलिंग की तरह, किसी एलिमेंट को रिफ़्लेक्ट करने के लिए, इस मैट्रिक्स फ़ॉर्म को सीधे RELATIVE ट्रांसफ़ॉर्म के तौर पर इस्तेमाल किया जा सकता है. हालांकि, इससे एलिमेंट ट्रांसलेट भी होता है. एलिमेंट को बिना ट्रांसलेट किए रिफ़्लेक्ट करने के लिए, उसके एलिमेंट रेफ़रंस
फ़्रेम पर शिफ़्ट करें.
एलिमेंट रेफ़रंस फ़्रेम
किसी पेज एलिमेंट पर सीधे तौर पर, बेसिक स्केल, रोटेशन, या रिफ़्लेक्शन ट्रांसफ़ॉर्म लागू करने से, पेज के रेफ़रंस फ़्रेम में ट्रांसफ़ॉर्मेशन होता है. उदाहरण के लिए, बेसिक रोटेशन, एलिमेंट को पेज के ऑरिजिन (ऊपर-बाएं कोने) के चारों ओर घुमाता है. हालांकि, एलिमेंट के रेफ़रंस फ़्रेम में काम किया जा सकता है. उदाहरण के लिए, किसी एलिमेंट को उसके बीच में मौजूद पॉइंट के चारों ओर घुमाया जा सकता है.
किसी एलिमेंट को उसके रेफ़रंस फ़्रेम में ट्रांसफ़ॉर्म करने के लिए, उसे दो अन्य ट्रांसलेशन के बीच में रखें: पहला, T1 ट्रांसलेशन, जो एलिमेंट के बीच में मौजूद पॉइंट को पेज के ऑरिजिन पर ले जाता है. दूसरा, T2 ट्रांसलेशन, जो एलिमेंट को उसकी ओरिजनल पोज़िशन पर वापस ले जाता है. पूरी कार्रवाई को मैट्रिक्स प्रॉडक्ट के तौर पर दिखाया जा सकता है:
ऑरिजिन पर अलग-अलग पॉइंट ट्रांसलेट करके, दूसरे रेफ़रंस फ़्रेम पर भी शिफ़्ट किया जा सकता है. ये पॉइंट, नए रेफ़रंस फ़्रेम के बीच में मौजूद पॉइंट बन जाते हैं.
इनमें से हर ट्रांसफ़ॉर्मेशन को, क्रम से RELATIVE ट्रांसफ़ॉर्म के अनुरोध के तौर पर अलग-अलग किया जा सकता है. सबसे सही तरीका यह है कि मैट्रिक्स गुणन का इस्तेमाल करके, ऊपर दिए गए A'
की पहले से गणना कर ली जाए. इसके बाद, नतीजे को एक ABSOLUTE
के तौर पर लागू किया जाए. इसके अलावा, T2 * B * T1 प्रॉडक्ट की पहले से गणना करें और उसे एक RELATIVE ट्रांसफ़ॉर्म के तौर पर लागू करें. ये दोनों तरीके, ट्रांसफ़ॉर्म के अनुरोधों को अलग-अलग भेजने के मुकाबले, एपीआई कार्रवाइयों के मामले में ज़्यादा कारगर हैं.
सीमाएं
साइज़ तय करने और पोज़िशन करने के कुछ फ़ील्ड, पेज के कुछ एलिमेंट के टाइप के साथ काम नहीं करते. यहां दी गई टेबल में, साइज़ तय करने और पोज़िशन करने के फ़ील्ड के साथ, पेज के कुछ एलिमेंट की काम करने की क्षमता के बारे में खास जानकारी दी गई है:
| फ़ील्ड | आकार | वीडियो | टेबल |
|---|---|---|---|
| ट्रांसलेशन | ✔ | ✔ | ✔ |
| स्केल | ✔ | ✔ | नहीं** |
| शियर | ✔ | नहीं | नहीं |
टेबल की पंक्तियों और कॉलम के डाइमेंशन अपडेट करने के लिए, UpdateTableRowPropertiesRequest
और
UpdateTableColumnPropertiesRequest का इस्तेमाल करें.
अगर पेज के एलिमेंट में शियरिंग है, तो साइज़ तय करने और पोज़िशन करने के सभी फ़ील्ड से अनचाहे नतीजे मिल सकते हैं. सभी सीमाओं में बदलाव किया जा सकता है. मौजूदा जानकारी के लिए, Google Slides API देखें.
रीफ़ैक्टर की गई वैल्यू
पेज तत्व बनाते समय, ऐसा साइज़ और ट्रांसफ़ॉर्म तय किया जा सकता है जिससे कोई खास विज़ुअल नतीजा मिले. हालांकि, Slides API, आपकी दी गई वैल्यू को उन वैल्यू से बदल सकता है जिनसे वही विज़ुअल नतीजा मिलता है. आम तौर पर, अगर एपीआई का इस्तेमाल करके कोई साइज़ तय किया जाता है, तो इस बात की कोई गारंटी नहीं होती कि आपको वही साइज़ वापस मिलेगा. हालांकि, अगर ट्रांसफ़ॉर्म को ध्यान में रखा जाए, तो आपको वही नतीजे मिलने चाहिए.