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

पेज के किसी एलिमेंट का साइज़ और जगह जानने और बदलने के लिए, ये दो तरीके अपनाए जा सकते हैं:

  1. साइज़ और पोज़िशन के लिए, इसके गटर और सेटर फ़ंक्शन का इस्तेमाल करना.
  2. मूल साइज़ को बनाए रखते हुए, getTransform() और setTransform() फ़ंक्शन का इस्तेमाल करके, ऐफ़ाइन ट्रांसफ़ॉर्म में बदलाव करना.

पेज एलिमेंट की प्रॉपर्टी पढ़ना

साइज़ बदलना और घुमाना

जैसा कि इस इमेज में दिखाया गया है, साइज़ और पोज़िशन को रेंडर किए गए पेज एलिमेंट के बाउंडिंग बॉक्स के हिसाब से मेज़र किया जाता है, जब उसमें कोई रोटेशन नहीं होता:

  • लेफ़्ट और टॉप: पेज के सबसे ऊपर बाएं कोने से, बिना घुमाए गए बाउंडिंग बॉक्स के सबसे ऊपर बाएं कोने तक का मेज़र किया जाता है. वैल्यू पढ़ने के लिए, getLeft() और getTop() का इस्तेमाल करें.
  • चौड़ाई और ऊंचाई: बिना घुमाए गए बाउंडिंग बॉक्स की चौड़ाई और ऊंचाई. वैल्यू पढ़ने के लिए, getWidth() और getHeight() का इस्तेमाल करें.
  • रोटेशन: बाउंडिंग बॉक्स के बीच में मौजूद वर्टिकल लाइन के हिसाब से, घड़ी की दिशा में घुमाना. वैल्यू पढ़ने के लिए, getRotation() का इस्तेमाल करें.

सभी लंबाई को पॉइंट (pt) में मेज़र किया जाता है. घुमाव को डिग्री (°) में मेज़र किया जाता है.

पेज एलिमेंट की प्रॉपर्टी सेट करना

insertShape() जैसे किसी इंसर्ट करने के तरीके का इस्तेमाल करके, पेज एलिमेंट बनाते समय उसका साइज़ और पोज़िशन सेट की जा सकती है. किसी मौजूदा आकार के लिए, उसका साइज़, पोज़िशन, और रोटेशन सेट किया जा सकता है. साथ ही, किसी एलिमेंट का साइज़ बदलने या उसे उसके किसी किनारे पर दिखाने के लिए, एलिमेंट की स्केलिंग भी सेट की जा सकती है.

बनाने के समय

पेज एलिमेंट बनाते समय, उसकी पोज़िशन और साइज़ की जानकारी दी जा सकती है.

var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.TEXT_BOX, 100, 200, 300, 60);
Logger.log('Left: ' + shape.getLeft() + 'pt; Top: '
                    + shape.getTop() + 'pt; Width: '
                    + shape.getWidth() + 'pt; Height: '
                    + shape.getHeight() + 'pt; Rotation: '
                    + shape.getRotation() + ' degrees.');

ऊपर दी गई स्क्रिप्ट, चालू प्रज़ेंटेशन की पहली स्लाइड पर, तय की गई पोज़िशन और साइज़ के साथ एक आकार बनाती है. साथ ही, आकार की पोज़िशन और साइज़ की जानकारी पढ़ती है. अनुमानित लॉग यह है:

Left: 100pt; Top: 200pt; Width: 300pt; Height: 60pt; Rotation: 0 degrees.

साइज़, पोज़िशन, और घुमाव

पेज एलिमेंट बनाने के बाद, उसके साइज़ और पोज़िशन को अपडेट किया जा सकता है:

  • बिना घुमाए गए बाउंडिंग बॉक्स के ऊपरी बाएं कोने की पोज़िशन सेट करने के लिए, setLeft() और setTop() का इस्तेमाल करें.
  • बाउंडिंग बॉक्स की रेंडर की गई चौड़ाई और ऊंचाई सेट करने के लिए, setWidth() और setHeight() का इस्तेमाल करें.
  • बाउंडिंग बॉक्स को उसके केंद्र के चारों ओर, घड़ी की सुई की दिशा में घुमाने के लिए, setRotation() का इस्तेमाल करें.

यह स्क्रिप्ट, चालू प्रज़ेंटेशन की पहली स्लाइड पर एक आकार बनाती है. साथ ही, इसकी जगह, साइज़, और रोटेशन को अपडेट करने के लिए सेटर का इस्तेमाल करती है. साथ ही, आकार की जगह और साइज़ की जानकारी पढ़ती है.

var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.RECTANGLE);
shape.setLeft(100).setTop(200).setWidth(50).setHeight(60).setRotation(90);
Logger.log('Left: ' + shape.getLeft()
                    + 'pt; Top: ' + shape.getTop()
                    + 'pt; Width: ' + shape.getWidth()
                    + 'pt; Height: ' + shape.getHeight()
                    + 'pt; Rotation: ' + shape.getRotation() + '\u00B0.');

इस स्क्रिप्ट से मिलने वाला अनुमानित लॉग आउट, यहां दिखाया गया है:

Left: 100pt; Top: 200pt; Width: 50pt; Height: 60pt; Rotation: 90°.

साइज़, पोज़िशन, और रोटेशन सेटर का इस्तेमाल किसी भी क्रम या कॉम्बिनेशन में किया जा सकता है. ऊपर दी गई तीसरी लाइन को इस स्क्रिप्ट से बदलने पर, वही नतीजा मिलेगा:

shape.setWidth(55);
shape.setRotation(90).setHeight(60).setLeft(100);
shape.setWidth(50).setTop(200);

स्केलिंग:

आकार को किसी ऐब्सलूट वैल्यू पर सेट करने के लिए, ऊपर दिए गए setWidth() और setHeight() का इस्तेमाल करने के बजाय, scaleWidth() और scaleHeight() का इस्तेमाल किया जा सकता है. इससे, किसी पेज एलिमेंट को रिलेटिव स्केलिंग फ़ैक्टर के साथ स्ट्रेच या कसने में मदद मिलती है.

shape.scaleHeight(0.5).scaleWidth(2);

नीचे दिए गए इलस्ट्रेशन में दिखाया गया है कि ऊपर दिया गया कोड, 45° के कोण पर घुमाए गए स्क्वेयर आकार पर कैसे काम करता है. ध्यान दें कि स्केलिंग के दौरान, बाउंडिंग बॉक्स का ऊपरी बायां कोना तय रहता है.

स्लाइड को स्केल करना

किनारे पर रिफ़्लेक्शन

scaleWidth() और scaleHeight() में मौजूद आर्ग्युमेंट नेगेटिव हो सकते हैं, ताकि उनका इस्तेमाल किसी पेज एलिमेंट को हॉरिज़ॉन्टल या वर्टिकल तौर पर फ़्लिप करने के लिए किया जा सके.

shape.scaleWidth(-1); // Flip horizontally along the left edge of the bounding box.
shape.scaleHeight(-1); // Flip vertically along the top edge of the bounding box.

नीचे दिए गए इलस्ट्रेशन में दिखाया गया है कि ऊपर दिया गया कोड, 45° घुमाए गए आकार पर कैसे काम करता है. ध्यान दें कि पेज एलिमेंट को उसके बॉउंडिंग बॉक्स के किसी एक किनारे पर फ़्लिप किया गया है, न कि उसके बीच में.

Slides Reflection

लाइन रोटेशन

पेज के अन्य एलिमेंट की तरह, किसी लाइन का रोटेशन, लाइन का वर्टिकल ऐंगल नहीं होता, बल्कि उसके बाउंडिंग बॉक्स का रोटेशन होता है. शुरू और खत्म होने के तय बिंदुओं वाली लाइन बनाने पर, उसका रोटेशन हमेशा 0° होता है. Google Slides के यूज़र इंटरफ़ेस (यूआई) में लाइन के एंडपॉइंट को खींचने पर, उसके वर्टिकल ऐंगल के साथ-साथ उसके बाउंडिंग बॉक्स का साइज़ और पोज़िशन भी बदल जाती है. हालांकि, इससे लाइन का रोटेशन नहीं बदलता. setRotation() का इस्तेमाल करके, लाइन के बाउंडिंग बॉक्स को घुमाया जा सकता है. इससे, लाइन के वर्टिकल ऐंगल में बदलाव होता है. इसलिए, दो लाइनों का वर्टिकल ऐंगल एक जैसा हो सकता है, लेकिन उनके बाउंडिंग बॉक्स अलग-अलग हो सकते हैं. इसलिए, उनके साइज़, पोज़िशन, और रोटेशन की वैल्यू भी अलग-अलग हो सकती हैं.

सीमाएं

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

तरीके आकार वीडियो तालिका
getHeight(), getWidth() नहीं (शून्य दिखाता है)
setHeight(), setWidth() नहीं
setRotation() नहीं नहीं
scaleHeight(), scaleWidth() नहीं

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

ऐफ़ाइन ट्रांसफ़ॉर्म का इस्तेमाल करना

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

Google Apps Script, Google Slides API की तरह ही, ऐफ़ाइन ट्रांसफ़ॉर्मेशन का इस्तेमाल करने के लिए मिलता-जुलता इंटरफ़ेस उपलब्ध कराता है.

  • इस लेख में, ऐफ़ाइन ट्रांसफ़ॉर्म के कॉन्सेप्ट के बारे में बताया गया है. साथ ही, पेज एलिमेंट के लिए, मूल (नेटिव) साइज़ और ट्रांसफ़ॉर्म से रेंडर किए गए साइज़ का अनुमान लगाने का तरीका भी बताया गया है. Apps Script में,
      का इस्तेमाल करें
    • पेज एलिमेंट के नेटिव साइज़ के लिए getInherentWidth() और getInherentHeight();
    • getTransform(), पेज के एलिमेंट के ऐफ़ाइन ट्रांसफ़ॉर्म के लिए.
  • इस लेख में, एफ़ाइन ट्रांसफ़ॉर्म का इस्तेमाल करके, पेज एलिमेंट का साइज़ और पोज़िशन तय करने का तरीका बताया गया है. इससे, स्केलिंग, रोटेशन, रिफ़्लेक्शन वगैरह की सुविधाएं मिलती हैं. Apps Script में,
    • setTransform(), पेज एलिमेंट का अफ़ाइन ट्रांसफ़ॉर्म सेट करने के लिए (यह ABSOLUTE मोड जैसा ही है);
    • preconcatenateTransform(), पेज एलिमेंट के मौजूदा ट्रांसफ़ॉर्म में, ऐफ़ाइन ट्रांसफ़ॉर्म को पहले से जोड़ने के लिए (RELATIVE मोड की तरह).

यहां दी गई स्क्रिप्ट, एक शेप बनाती है, उसका ट्रांसफ़ॉर्म सेट करती है, उसका मूल साइज़ पढ़ती है, और उसका ऐफ़ाइन ट्रांसफ़ॉर्म पढ़ती है.

var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.RECTANGLE);
shape.setTransform(SlidesApp.newAffineTransformBuilder()
                   .setScaleX(2)
                   .setScaleY(1)
                   .setTranslateX(100)
                   .setTranslateY(200)
                   .build());
Logger.log('Inherent width: ' + shape.getInherentWidth()
                              + 'pt; Inherent height: '
                              + shape.getInherentHeight() + 'pt.');

इस स्क्रिप्ट से मिलने वाला अनुमानित लॉग आउट, यहां दिखाया गया है:

Inherent width: 236.2pt; Inherent height: 236.2pt.

इस शेप में, ट्रांसफ़ॉर्म के साथ-साथ रेंडर किया गया साइज़ और पोज़िशन भी शामिल होगा:

AffineTransform{scaleX=2.0, scaleY=1.0, shearX=0.0, shearY=0.0, translateX=100.0, translateY=200.0}
Left: 100pt; Top: 200pt; Width: 472.4pt; Height: 236.2pt; Rotation: 0°.