ট্রান্সফর্ম অপারেশন

গুগল স্লাইডস এপিআই আপনাকে একটি পৃষ্ঠায় একটি PageElement (টেক্সট বক্স, ছবি, টেবিল এবং মৌলিক আকার) অবস্থান, আকার এবং ওরিয়েন্টেশন নিয়ন্ত্রণ করতে দেয়, একই সাথে লাইনগুলিকে সোজা রাখে এবং পয়েন্ট এবং সমান্তরাল লাইনগুলি সংরক্ষণ করে। এগুলিকে অ্যাফাইন ট্রান্সফর্মেশন বলা হয়। এখানে উদাহরণগুলি presentations.batchUpdate পদ্ধতি ব্যবহার করে কিছু সাধারণ পেজ এলিমেন্ট ট্রান্সফর্ম অপারেশন দেখায়।

এই উদাহরণগুলিতে নিম্নলিখিত ভেরিয়েবলগুলি ব্যবহার করা হয়েছে:

  • PRESENTATION_ID — আপনি কোথায় উপস্থাপনা আইডি প্রদান করেছেন তা নির্দেশ করে। আপনি উপস্থাপনা URL থেকে এই আইডির মান আবিষ্কার করতে পারেন।
  • PAGE_ID — আপনি কোথায় পৃষ্ঠা অবজেক্ট আইডি প্রদান করেছেন তা নির্দেশ করে। আপনি URL থেকে অথবা API রিড রিকোয়েস্ট ব্যবহার করে এর মান পুনরুদ্ধার করতে পারেন।
  • PAGE_ELEMENT_IDপৃষ্ঠার উপাদান অবজেক্ট আইডি কোথায় প্রদান করবেন তা নির্দেশ করে। আপনি যে উপাদানগুলি তৈরি করেন তার জন্য এই আইডিটি নির্দিষ্ট করতে পারেন ( কিছু বিধিনিষেধ সহ) অথবা স্লাইডস API-কে স্বয়ংক্রিয়ভাবে একটি তৈরি করার অনুমতি দিতে পারেন। API পঠনের অনুরোধের মাধ্যমে এলিমেন্ট আইডিগুলি পুনরুদ্ধার করা যেতে পারে।

এই উদাহরণগুলি ভাষা নিরপেক্ষ থাকার জন্য HTTP অনুরোধ হিসাবে উপস্থাপন করা হয়েছে। Google API ক্লায়েন্ট লাইব্রেরি ব্যবহার করে বিভিন্ন ভাষায় ব্যাচ আপডেট কীভাবে বাস্তবায়ন করতে হয় তা জানতে, আকার এবং পাঠ্য যোগ করুন দেখুন।

তীর আকৃতির উদাহরণ

নীচের এই উদাহরণগুলির জন্য, ধরে নিন যে নিম্নলিখিত আকার এবং রূপান্তর ডেটা সহ একটি উদাহরণ তীর আকৃতি পৃষ্ঠা উপাদান রয়েছে (যা একটি presentations.pages.get পদ্ধতির অনুরোধের সাথে পাওয়া যেতে পারে)। উদাহরণ আকৃতি পরিমাপ unit EMU (ইংরেজি মেট্রিক ইউনিট) এবং pt (পয়েন্ট) ব্যবহার করে।

{
  "objectId": PAGE_ELEMENT_ID,
  "size": {
    "width": {
      "magnitude": 3000000,
      "unit": "EMU"
    },
    "height": {
      "magnitude": 3000000,
      "unit": "EMU"
    }
  },
  "transform": {
    "scaleX": 0.3,
    "scaleY": 0.12,
    "shearX": 0,
    "shearY": 0,
    "translateX": 2000000,
    "translateY":  550000,
    "unit": "EMU"
  },
  "shape": {
    "shapeType": "RIGHT_ARROW"
  }
}

একটি উপাদানকে অন্যটির সাথে সারিবদ্ধ করুন

নিম্নলিখিত presentations.batchUpdate কোড নমুনাটি দেখায় যে কীভাবে CreateShapeRequest পদ্ধতি ব্যবহার করে পৃষ্ঠার উদাহরণ তীর আকৃতির সাথে সঠিক অবস্থানে নতুন আকার তৈরি করতে হয়। উভয় ক্ষেত্রেই, নতুন আকৃতির উপরের-বাম কোণের X এবং Y স্থানাঙ্ক গণনা করতে হবে।

প্রথম অনুরোধটি ১০০ বাই ৫০ পয়েন্ট আয়তক্ষেত্র তৈরি করে যা তীর আকৃতির বাম সীমানায় সারিবদ্ধ থাকে, কিন্তু তীরের উপরের প্রান্তের নীচে ৫০ পয়েন্ট (৫০ * ১২,৭০০ = ৬৩৫,০০০ EMU) অবস্থান করে। নতুন আয়তক্ষেত্রের X স্থানাঙ্কটি তীরের X স্থানাঙ্কের সাথে একই হওয়া উচিত যাতে এর বাম সীমানা সারিবদ্ধ থাকে। Y স্থানাঙ্কটি তীরের Y স্থানাঙ্ক প্লাস ৫০ পয়েন্টের সাথে একই, কারণ তীরের উপরের দিক থেকে দূরত্ব পরিমাপ করা হয়। তাই আয়তক্ষেত্রের স্থানাঙ্কগুলি হল:

x" = 2000000 EMU
y" = 550000 + (50 * 12700) = 1185000 EMU

দ্বিতীয় অনুরোধটি একটি 40 পয়েন্ট প্রশস্ত বৃত্ত তৈরি করে যার উদাহরণ তীরের মতো একই অনুভূমিক কেন্দ্ররেখা রয়েছে, তবে তীরের ডান প্রান্তের ডানদিকে 100 পয়েন্ট (1,270,000 EMU) অবস্থিত। বৃত্তের X স্থানাঙ্ক হল তীরের X স্থানাঙ্ক, তীরের প্রস্থ এবং 100 পয়েন্টের সমষ্টি। নতুন বৃত্তের জন্য একটি কেন্দ্র-রেখা সারিবদ্ধকরণ কার্যকর করার জন্য তীর এবং বৃত্ত উভয়ের উচ্চতা বিবেচনা করা প্রয়োজন। বৃত্তের Y স্থানাঙ্ক হল তীরের Y স্থানাঙ্ক প্লাস তীরের উচ্চতার অর্ধেক বিয়োগ করে বৃত্তের উচ্চতার অর্ধেক। উভয় ক্ষেত্রেই, তীরের সাথে সম্পর্কিত স্কেলিং ফ্যাক্টরগুলিও বিবেচনায় নেওয়া উচিত, কারণ তারা তীরের রেন্ডার করা প্রস্থ এবং উচ্চতাকে প্রভাবিত করে। অতএব, বৃত্তের স্থানাঙ্কগুলি হল:

x = 2000000 + (0.3 * 3000000) + (100 * 12700) = 4170000 EMU
y = 550000 + (0.5 * 0.12 * 3000000) - (0.5 * 40 * 12700) = 476000 EMU

একটি উপাদানকে অন্য উপাদানের সাথে সারিবদ্ধ করার জন্য অনুরোধ প্রোটোকলটি নিম্নরূপ:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "createShape": {
        "shapeType": "RECTANGLE",
        "elementProperties": {
          "pageObjectId": PAGE_ID,
          "size": {
            "width": {
              "magnitude": 100,
              "unit": "PT"
            },
            "height": {
              "magnitude": 50,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 2000000,
            "translateY": 1185000,
            "unit": "EMU"
          }
        }
      }
    },
    {
      "createShape": {
        "shapeType": "ELLIPSE",
        "elementProperties": {
          "pageObjectId": PAGE_ID,
          "size": {
            "width": {
              "magnitude": 40,
              "unit": "PT"
            },
            "height": {
              "magnitude": 40,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 4170000,
            "translateY":  476000,
            "unit": "EMU"
          }
        }
      }
    }
  ]
}

একটি উপাদান সরান

নিম্নলিখিত presentations.batchUpdate কোড নমুনাটি দেখায় কিভাবে UpdatePageElementTransformRequest পদ্ধতি ব্যবহার করে উদাহরণ তীর আকৃতির পৃষ্ঠা উপাদানটিকে দুটি ভিন্ন উপায়ে অনুবাদ করতে হয়।

ব্যাচের প্রথম অনুরোধটি তীরটিকে (X,Y) = (2000000, 150000) EMU স্থানাঙ্কে (একটি পরম অনুবাদ applyMode ব্যবহার করে) নিয়ে যায়। ব্যাচের দ্বিতীয় অনুরোধটি সেখান থেকে তীরটিকে সরায়, এবার 40,000 EMU ডানে এবং 35,000 EMU উপরের দিকে (একটি আপেক্ষিক অনুবাদ applyMode ব্যবহার করে)। ব্যবহৃত transformation1 ম্যাট্রিক্সগুলি উপাদানের আকার এবং অভিযোজন পরিবর্তন এড়াতে তৈরি করা হয়।

উভয় অনুরোধ কার্যকর করার পর, তীরের উপরের-বাম কোণটি (X,Y) = (2040000, 115000) EMU স্থানাঙ্কে স্থির থাকে।

একটি উপাদান সরানোর জন্য অনুরোধ প্রোটোকলটি নিম্নরূপ:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "ABSOLUTE",
        "transform": {
            "scaleX": 0.3,
            "scaleY": 0.12,
            "translateX": 2000000,
            "translateY":  150000,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX":  40000,
            "translateY": -35000,
            "unit": "EMU"
        }
      }
    }
  ]
}

একটি উপাদান প্রতিফলিত করুন

নিম্নলিখিত presentations.batchUpdate কোড নমুনাটি দেখায় কিভাবে UpdatePageElementTransformRequest পদ্ধতি ব্যবহার করে উদাহরণ তীর আকৃতির পৃষ্ঠা উপাদানটিকে তার কেন্দ্র বরাবর অনুভূমিকভাবে প্রতিফলিত করতে হয়, পৃষ্ঠায় এর অবস্থান পরিবর্তন না করে বা স্কেলিং না করে।

এটি উপাদানের রেফারেন্স ফ্রেমে একটি মৌলিক প্রতিফলন রূপান্তর ব্যবহার করে করা হয়। স্পষ্টতার জন্য, রেফারেন্স ফ্রেম শিফট এবং প্রতিফলন UpdatePageElementTransformRequest পদ্ধতিতে তিনটি পৃথক কলের মাধ্যমে দেখানো হয়েছে, তবে এই রূপান্তর ম্যাট্রিক্সের গুণফল প্রাক-গণনা করা এবং তারপরে সেই পণ্যটিকে একটি একক অনুরোধ হিসাবে প্রয়োগ করা আরও দক্ষ।

অনুবাদ রূপান্তরের জন্য, তীর আকৃতির কেন্দ্রটি উৎপত্তিস্থলে এবং সেখান থেকে সরানো হয়। স্বচ্ছতার জন্য প্যারামিটার মানগুলি গণনা হিসাবে প্রকাশ করা হয়।

একটি উপাদান প্রতিফলিত করার জন্য অনুরোধ প্রোটোকলটি নিম্নরূপ:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX": -2000000 - 0.5 * 0.3  * 3000000,
            "translateY":  -550000 - 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": -1,
            "scaleY":  1,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}

একটি উপাদানের আকার পরিবর্তন করুন

নিম্নলিখিত presentations.batchUpdate কোড নমুনাটি দেখায় কিভাবে UpdatePageElementTransformRequest পদ্ধতি ব্যবহার করে তীর আকৃতির পৃষ্ঠা উপাদানটিকে ৫০% প্রশস্ত করতে হয় এবং তার বর্তমান উচ্চতার মাত্র ৮০% রাখতে হয়, একই সাথে তীরের কেন্দ্রটিকে একই অবস্থানে রেখে এবং তার অভিযোজন বজায় রেখে।

এটি এলিমেন্টের রেফারেন্স ফ্রেমে একটি বেসিক স্কেলিং ট্রান্সফর্ম ব্যবহার করে করা হয়। স্পষ্টতার জন্য, রেফারেন্স ফ্রেম শিফট এবং স্কেলিং UpdatePageElementTransformRequest পদ্ধতিতে তিনটি পৃথক কলের মাধ্যমে দেখানো হয়েছে, তবে এই রূপান্তর ম্যাট্রিক্সের পণ্যটি প্রাক-গণনা করা এবং তারপরে সেই পণ্যটিকে একটি একক অনুরোধ হিসাবে প্রয়োগ করা আরও দক্ষ।

অনুবাদ রূপান্তরের জন্য, তীর আকৃতির কেন্দ্রটি উৎপত্তিস্থলে এবং সেখান থেকে সরানো হয়। স্বচ্ছতার জন্য প্যারামিটার মানগুলি গণনা হিসাবে প্রকাশ করা হয়।

একটি এলিমেন্টের আকার পরিবর্তনের জন্য অনুরোধ প্রোটোকলটি নিম্নরূপ:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
          "objectId": PAGE_ELEMENT_ID,
          "applyMode": "RELATIVE",
          "transform": {
              "scaleX":  1,
              "scaleY":  1,
              "translateX": -2000000 - 0.5 * 0.3  * 3000000,
              "translateY":  -550000 - 0.5 * 0.12 * 3000000,
              "unit": "EMU"
          }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": 1.5,
            "scaleY": 0.8,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}

একটি উপাদানকে তার কেন্দ্রের চারপাশে ঘোরান

নিম্নলিখিত presentations.batchUpdate কোড নমুনাটি দেখায় কিভাবে UpdatePageElementTransformRequest পদ্ধতি ব্যবহার করে উদাহরণ তীর আকৃতি পৃষ্ঠা উপাদানটিকে ঘড়ির কাঁটার বিপরীতে 35 ডিগ্রি ঘোরাতে হয়, একই সাথে তীরের কেন্দ্রটিকে একই অবস্থানে রেখে এবং এর আকার বজায় রেখে।

এটি এলিমেন্টের রেফারেন্স ফ্রেমে একটি বেসিক রোটেশন ট্রান্সফর্ম ব্যবহার করে করা হয়। স্পষ্টতার জন্য, রেফারেন্স ফ্রেম শিফট এবং রোটেশন UpdatePageElementTransformRequest পদ্ধতিতে তিনটি পৃথক কলের মাধ্যমে দেখানো হয়েছে, তবে এই ট্রান্সফর্মেশন ম্যাট্রিক্সের গুণফল প্রাক-গণনা করা এবং তারপর সেই পণ্যটিকে একটি একক অনুরোধ হিসাবে প্রয়োগ করা আরও দক্ষ।

অনুবাদ রূপান্তরের জন্য, তীর আকৃতির কেন্দ্রটি উৎপত্তিস্থলে এবং সেখান থেকে সরানো হয়। স্বচ্ছতার জন্য প্যারামিটার মানগুলি গণনা হিসাবে প্রকাশ করা হয়।

একটি উপাদানকে কেন্দ্রের চারপাশে ঘোরানোর জন্য অনুরোধ প্রোটোকলটি নিম্নরূপ:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
          "objectId": PAGE_ELEMENT_ID,
          "applyMode": "RELATIVE",
          "transform": {
              "scaleX":  1,
              "scaleY":  1,
              "translateX": -2000000 - 0.5 * 0.3  * 3000000,
              "translateY":  -550000 - 0.5 * 0.12 * 3000000,
              "unit": "EMU"
          }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  cos(35 * (pi/180)),
            "scaleY":  cos(35 * (pi/180)),
            "shearX":  sin(35 * (pi/180)),
            "shearY": -sin(35 * (pi/180)),
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}