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