আকার এবং অবস্থান পৃষ্ঠা উপাদান, আকার এবং অবস্থান পৃষ্ঠা উপাদান

এই নির্দেশিকাটি গুগল স্লাইডস এপিআই (Google Slides API) ব্যবহার করে অ্যাফাইন ট্রান্সফর্মের সাহায্যে কীভাবে পেজের উপাদানগুলির আকার ও অবস্থান নির্ধারণ করা যায়, তা ব্যাখ্যা করে। অ্যাফাইন ট্রান্সফর্ম সম্পর্কে একটি ধারণাগত পরিচিতির জন্য, ‘ট্রান্সফর্মস অ্যান্ড পেজ এলিমেন্টস’ ধারণা নির্দেশিকাটি দেখুন।

উপাদানগুলিকে রূপান্তর করুন

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

একটি ApplyMode ব্যবহার করে রূপান্তর করা যেতে পারে:

  • ABSOLUTE ট্রান্সফর্ম এলিমেন্টের বিদ্যমান ট্রান্সফর্মেশন ম্যাট্রিক্সকে প্রতিস্থাপন করে । ট্রান্সফর্ম আপডেট অনুরোধ থেকে আপনি যে প্যারামিটারগুলো বাদ দেন, সেগুলোর মান শূন্য সেট করা হয়।

  • RELATIVE ট্রান্সফর্মগুলোকে এলিমেন্টটির বিদ্যমান ট্রান্সফর্মেশন ম্যাট্রিক্সের সাথে গুণ করা হয় (গুণের ক্রম গুরুত্বপূর্ণ):

$$A' = BA$$

রিলেটিভ ট্রান্সফর্ম পেজের কোনো এলিমেন্টকে তার বর্তমান অবস্থান থেকে সরায় বা তার আকার পরিবর্তন করে। যেমন, একটি শেপকে ১০০ পয়েন্ট বামে সরানো, বা ৪০ ডিগ্রি ঘোরানো। অ্যাবসোলিউট ট্রান্সফর্ম বিদ্যমান অবস্থান এবং আকারের তথ্য বাতিল করে দেয়; যেমন, একটি শেপকে পেজের কেন্দ্রে সরানো, বা একটি নির্দিষ্ট প্রস্থে এর আকার পরিবর্তন করা।

জটিল রূপান্তরগুলোকে সাধারণত সরলতর রূপান্তরের একটি অনুক্রম হিসেবে প্রকাশ করা যায়। কোনো রূপান্তর পূর্ব-গণনা করে রাখলে—অর্থাৎ ম্যাট্রিক্স গুণনের মাধ্যমে একাধিক রূপান্তরকে একত্রিত করলে—প্রায়শই অতিরিক্ত কাজের চাপ কমানো যায়।

কিছু অপারেশনের জন্য, কোনো এলিমেন্টের বিদ্যমান ট্রান্সফর্ম প্যারামিটারগুলো আপনার জানা আবশ্যক। যদি আপনার কাছে এই মানগুলো না থাকে, তবে আপনি presentations.pages.get() মেথড ব্যবহার করে সেগুলো সংগ্রহ করতে পারেন।

অনুবাদ

ট্রান্সলেশন হলো একই পৃষ্ঠার কোনো উপাদানকে একটি নতুন অবস্থানে সরানোর প্রক্রিয়া। অ্যাবসোলিউট ট্রান্সলেশন উপাদানটিকে একটি নির্দিষ্ট বিন্দুতে নিয়ে যায়, অন্যদিকে রিলেটিভ ট্রান্সলেশন উপাদানটিকে একটি নির্দিষ্ট দূরত্বে সরিয়ে দেয়।

একটি মৌলিক অনুবাদ রূপান্তর ম্যাট্রিক্সের রূপটি হলো:

$$T=\begin{bmatrix} 1 & 0 & translate\_x\\ 0 & 1 & translate\_y\\ 0 & 0 & 1 \end{bmatrix}$$

যখন আপনি কোনো এলিমেন্টকে (তার আকার, শিয়ার বা ওরিয়েন্টেশন পরিবর্তন না করে) স্থানান্তরিত করতে 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 মাত্রা বরাবর প্রসারিত বা সংকুচিত করার প্রক্রিয়া। একটি মৌলিক স্কেলিং ট্রান্সফর্ম ম্যাট্রিক্সের গঠনটি হলো নিম্নরূপ:

$$S=\begin{bmatrix} scale\_x & 0 & 0\\ 0 & scale\_y & 0\\ 0 & 0 & 1 \end{bmatrix}$$

আপনি কোনো এলিমেন্টের আকার পরিবর্তন করতে এই ম্যাট্রিক্স ফর্মটিকে সরাসরি একটি RELATIVE ট্রান্সফর্ম হিসেবে ব্যবহার করতে পারেন, কিন্তু এটি এলিমেন্টটির রেন্ডার করা শিয়ার এবং ট্রান্সলেশনকেও প্রভাবিত করতে পারে। এর শিয়ার বা ট্রান্সলেশনকে প্রভাবিত না করে এলিমেন্টটির আকার পরিবর্তন করতে, এটিকে এর এলিমেন্ট রেফারেন্স ফ্রেমে স্থানান্তর করুন

ঘূর্ণন

রোটেশন ট্রান্সফর্ম স্কেলিং এবং শিয়ার প্যারামিটার ব্যবহার করে একটি পেজ এলিমেন্টকে কোনো একটি বিন্দুর চারপাশে ঘোরায়। মৌলিক রোটেশন ট্রান্সফর্ম ম্যাট্রিক্সটির গঠন নিম্নরূপ, যেখানে ঘূর্ণন কোণ (রেডিয়ানে) এক্স-অক্ষ থেকে ঘড়ির কাঁটার বিপরীত দিকে পরিমাপ করা হয়:

$$R=\begin{bmatrix} cos(\theta) & sin(\theta) & 0\\ -sin(\theta) & cos(\theta) & 0\\ 0 & 0 & 1 \end{bmatrix}$$

স্কেলিং-এর মতোই, আপনি এই ম্যাট্রিক্স ফর্মটি সরাসরি একটি RELATIVE ট্রান্সফর্ম হিসেবে কোনো এলিমেন্টকে ঘোরানোর জন্য ব্যবহার করতে পারেন, কিন্তু এর ফলে এলিমেন্টটি পেজের অরিজিনকে কেন্দ্র করে ঘোরে। এলিমেন্টটিকে তার কেন্দ্র বা অন্য কোনো বিন্দুকে কেন্দ্র করে ঘোরাতে হলে, সেই এলিমেন্ট রেফারেন্স ফ্রেমে শিফট করুন

প্রতিফলন

প্রতিফলন একটি উপাদানকে একটি নির্দিষ্ট রেখা বা অক্ষ বরাবর প্রতিবিম্বিত করে। মৌলিক x- এবং y-অক্ষ প্রতিফলন রূপান্তর ম্যাট্রিক্সের নিম্নলিখিত রূপগুলি রয়েছে:

$$F_x=\begin{bmatrix} 1 & 0 & 0\\ 0 & -1 & 0\\ 0 & 0 & 1\\ \end{bmatrix}\qquad\qquad F_y=\begin{bmatrix} -1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1\\ \end{bmatrix}$$

স্কেলিং-এর মতোই, আপনি কোনো এলিমেন্টকে প্রতিফলিত করতে এই ম্যাট্রিক্স ফর্মটিকে সরাসরি একটি RELATIVE ট্রান্সফর্ম হিসেবে ব্যবহার করতে পারেন, কিন্তু এর ফলে এলিমেন্টটি স্থানান্তরিতও হয়। কোনো রকম স্থানান্তর ছাড়াই এলিমেন্টটিকে প্রতিফলিত করতে, সেটিকে তার এলিমেন্ট রেফারেন্স ফ্রেমে শিফট করুন

উপাদান রেফারেন্স ফ্রেম

সরাসরি কোনো পেজ এলিমেন্টে একটি বেসিক স্কেল , রোটেশন বা রিফ্লেকশন ট্রান্সফর্ম প্রয়োগ করলে তা পেজের রেফারেন্স ফ্রেমে একটি রূপান্তর তৈরি করে। উদাহরণস্বরূপ, একটি বেসিক রোটেশন এলিমেন্টটিকে পেজের অরিজিন (উপরের-বাম কোণা) বরাবর ঘোরায়। তবে, আপনি এলিমেন্টটির রেফারেন্স ফ্রেমেও কাজ করতে পারেন, যেমন এলিমেন্টটিকে তার কেন্দ্রবিন্দুকে ঘিরে ঘোরানোর জন্য।

কোনো এলিমেন্টকে তার নিজস্ব রেফারেন্স ফ্রেমের মধ্যে রূপান্তর করতে, এটিকে অন্য দুটি ট্রান্সলেশনের মধ্যে আবদ্ধ করুন: একটি প্রিসিডিং ট্রান্সলেশন T1 যা এলিমেন্টের কেন্দ্রকে পেজ অরিজিনে নিয়ে যায়, এবং একটি ফলোয়িং ট্রান্সলেশন T2 যা এলিমেন্টটিকে তার মূল অবস্থানে ফিরিয়ে নিয়ে যায়। সম্পূর্ণ অপারেশনটি একটি ম্যাট্রিক্স প্রোডাক্ট হিসাবে প্রকাশ করা যেতে পারে:

$$A' = T2 \times B \times T1 \times A$$

আপনি বিভিন্ন বিন্দুকে মূলবিন্দুতে স্থানান্তরিত করে অন্য নির্দেশ কাঠামোতেও যেতে পারেন। এই বিন্দুগুলো নতুন নির্দেশ কাঠামোর কেন্দ্র হয়ে ওঠে।

এই রূপান্তরগুলির প্রত্যেকটিকে ক্রমানুযায়ী RELATIVE রূপান্তর অনুরোধ হিসাবে পৃথকভাবে সম্পাদন করা সম্ভব। আদর্শগতভাবে, আপনার উচিত ম্যাট্রিক্স গুণনের মাধ্যমে উপরে উল্লিখিত A' আগে থেকে গণনা করে নেওয়া এবং ফলাফলটিকে একটি একক ABSOLUTE রূপান্তর হিসাবে প্রয়োগ করা। বিকল্পভাবে, T2 * B * T1 গুণফলটি আগে থেকে গণনা করে নিন এবং সেটিকে একটি একক RELATIVE রূপান্তর হিসাবে প্রয়োগ করুন। পৃথকভাবে রূপান্তর অনুরোধ পাঠানোর তুলনায়, এপিআই অপারেশনের দিক থেকে এই দুটিই বেশি কার্যকর।

সীমাবদ্ধতা

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

মাঠ আকৃতি ভিডিও টেবিল
অনুবাদ
স্কেল না**
শিয়ার না না

টেবিলের সারি এবং কলামের মাত্রা আপডেট করতে, UpdateTableRowPropertiesRequest এবং UpdateTableColumnPropertiesRequest ব্যবহার করুন।

পেজ এলিমেন্টে শিয়ারিং থাকলে সমস্ত সাইজিং এবং পজিশনিং ফিল্ড অপ্রত্যাশিত ফলাফল দিতে পারে। সমস্ত সীমাবদ্ধতা পরিবর্তন সাপেক্ষ। বর্তমান তথ্যের জন্য, গুগল স্লাইডস এপিআই (Google Slides API) দেখুন।

পুনর্গঠিত মান

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