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

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

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

  • PRESENTATION_ID — আপনি কোথায় উপস্থাপনা 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 স্থানাঙ্কগুলি গণনা করা আবশ্যক।

প্রথম অনুরোধটি একটি 100 বাই 50 pt আয়তক্ষেত্র তৈরি করে যা তীর আকৃতির বাম সীমানায় সারিবদ্ধ, কিন্তু তীরের উপরের প্রান্তের নীচে 50 pt (50 * 12,700 = 635,000 EMU) অবস্থান করে। নতুন আয়তক্ষেত্রের X স্থানাঙ্কটি তার বাম সীমানা সারিবদ্ধ রাখতে তীরের X স্থানাঙ্কের মতো হওয়া উচিত। Y স্থানাঙ্কটি তীরের Y স্থানাঙ্ক প্লাস 50 pt-এর সমান, কারণ তীরের শীর্ষ থেকে দূরত্ব পরিমাপ করা হয়। আয়তক্ষেত্রের স্থানাঙ্কগুলি তাই হল:

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

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

উভয় অনুরোধ কার্যকর করার পরে, তীরের উপরের-বাম কোণটি (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 পদ্ধতিটি ব্যবহার করে উদাহরণ তীর আকৃতির পৃষ্ঠা উপাদানটিকে 50% চওড়া করতে এবং তার বর্তমান উচ্চতার মাত্র 80% স্কেল করতে হয়, যখন তীরের কেন্দ্রটিকে একই অবস্থানে রেখে এবং এর অভিযোজন বজায় রাখে .

এটি উপাদানের রেফারেন্স ফ্রেমে একটি মৌলিক স্কেলিং রূপান্তর ব্যবহার করে করা হয়। স্বচ্ছতার জন্য, 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"
        }
      }
    }
  ]
}