বিষয়বস্তুতে চলুন

বেসিক সি/লেখা

উইকিবই থেকে

BasicC SDL_ttf লাইব্রেরি এবং এর নিজস্ব সাধারণ বিটম্যাপ ফন্টের মাধ্যমে ভেক্টর ফন্ট সমর্থন করে।

বিটম্যাপ ফন্ট

[সম্পাদনা]

বিটম্যাপ ফন্টের প্যাটার্ন BASFont.bmp গ্রাফিক ফাইলে রয়েছে। এই সেটটি জেডএক্স স্পেকট্রাম কম্পিউটারের সিস্টেম ফন্টে মডেল করা হয়েছে, এতে 8x8 পিক্সেলের মাত্রা সহ 114টি অক্ষরের প্যাটার্ন রয়েছে। প্রথম 95টি অক্ষর ASCII স্ট্যান্ডার্ডের সাথে সঙ্গতিপূর্ণ, তারা 32-126 কোড সহ ASCII অক্ষরগুলির সাথে মিলে যায়, ↑ দ্বারা প্রতিস্থাপিত ^ অক্ষর ব্যতীত, এবং £ দ্বারা প্রতিস্থাপিত হয়, পরবর্তী অক্ষরটি ©, তারপর 18টি অক্ষর পোলিশের জন্য বৈশিষ্ট্যযুক্ত ভাষা সংজ্ঞায়িত করা হয়। প্রদর্শিত অক্ষরগুলির আকার (ডিফল্ট 16x16) এবং রঙ, পরিবর্তন এবং ফন্ট প্যাটার্ন পরিবর্তন করা সম্ভব৷
ফন্টের বৈশিষ্ট্যগুলি GPRINT গঠন দ্বারা উপস্থাপিত হয় এবং ক্ষেত্রগুলির সাথে GPR ভেরিয়েবলে সংরক্ষণ করা হয়:
SDL_টেক্সচার *T; ফন্ট ইমেজ
ধারণকারী টেক্সচারের একটি পয়েন্টার intx; "কারসার"
এর x অবস্থান int y; "কারসার"
এর y- অবস্থান uint8 sw; অক্ষর প্রস্থ, ডিফল্ট 8
Uint8sh; অক্ষরের উচ্চতা, ডিফল্ট 8
uint16w; প্রদর্শিত অক্ষরের প্রস্থ, 16
Int16h; প্রদর্শিত অক্ষরের উচ্চতা, 16

ফন্ট পরিবর্তন করার জন্য, GPR.T-তে অন্য ফন্টের চিত্রের জন্য একটি পয়েন্টার বরাদ্দ করা যথেষ্ট, যদি ফন্টগুলির 8x8 ব্যতীত অন্য মাত্রা থাকে - সেগুলি GPR.sw এবং GPR.sh এ প্রবেশ করা উচিত। ফন্টটি অন্য যেকোন চিত্রের মতো ফাইল থেকে লোড করা যেতে পারে বা তৈরি করা যেতে পারে, যেমন একটি আদর্শ পরিবর্তন করে। উল্টানো (নেতিবাচক) ফন্ট নিম্নলিখিত হিসাবে প্রাপ্ত করা যেতে পারে:

  • একটি টেক্সচারে একটি পয়েন্টার ঘোষণা করুন, যেমন: SDL_Texture *inverted_texture=NULL;
  • কল InvertImg(invertedfont,BASFont), এটি উল্টানো ফন্টগুলির সাথে একটি টেক্সচার তৈরি করবে এবং এটি পরিবর্তনশীল ইনভার্টেড ফন্টে বরাদ্দ করবে
  • ডিফল্ট ফন্ট ইমেজ ব্লেন্ডিং মোড সেট করতে ImgBlendMode(BASFont,1) কল করুন
  • কল GPR.T=রিভার্স ফন্ট;, এটি ফন্টটিকে বিপরীতে পরিবর্তন করবে

ফন্টটিকে একটি আদর্শে পরিবর্তন করতে, আমরা GPR.T=BASFont; কল করি

SDLGPrint(void*st,int m,int l,int X,int Y,Uint8 b)

[সম্পাদনা]

একটি পাঠ্য প্রদর্শনের রুটিন যা অন্যান্য কমান্ড দ্বারা বলা হয়। আপনি এটি সরাসরি ব্যবহার করতে পারেন, শেষে সেমিকোলন সম্পর্কে মনে রাখবেন। এটি পোলিশ ডায়াক্রিটিক অক্ষর সমর্থন করে, এটি একটি একক শিলালিপি বা ধারাবাহিক লাইনে শিলালিপির একটি অ্যারে প্রদর্শন করতে পারে।

  • st - টেক্সট দেখানো হবে বা স্ট্রিং এর একটি অ্যারে STRING[]
  • m - একটি প্রদত্ত স্ট্রিংয়ের জন্য সর্বাধিক অক্ষর সংখ্যা, -1 এর জন্য কোন সীমা নেই
  • l - সারণির সারির সর্বোচ্চ সংখ্যা প্রদর্শিত
  • X - X স্থানাঙ্ক, যার বাইরে অক্ষর লেখা বন্ধ বা পরের লাইনে যায়
  • Y - Y সমন্বয়, যার বাইরে অক্ষর লেখা বন্ধ
  • b - !=0 - interrupt, 0 - পরবর্তী লাইনে যান

পদ্ধতিটিকে কল করে SDLGPrint(t,STRLEN,1,WINDOWW,WINDOWH,0);, যা "কার্সার" অবস্থান GPR.x,GPR.y থেকে শুরু করে ক্রমানুসারে স্ক্রিনে পাঠ্য মুদ্রণ করে। এবং কার্সারটিকে শেষ পাঠে নিয়ে যায়। যদি এটি স্ট্রিং টি-তে '\n' খুঁজে পায় তবে এটি কার্সারটিকে একটি নতুন লাইনের শুরুতে নিয়ে যায়।

GPrintAt(X,Y,t)

[সম্পাদনা]

আমি উপরে, শুধুমাত্র কার্সারটিকে প্রথমে X,Y অবস্থানে নিয়ে যায়। চালায় {GPR.x=(X);GPR.y=(Y);SDLGPrint(t,STRLEN,1,WINDOWW,WINDOWH,0);}

GP Printn(t,n)

[সম্পাদনা]

জিপিপ্রিন্টের মতো, কিন্তু সর্বাধিক n অক্ষর, SDLGPrint(t,n,1,WINDOWW,WINDOWH,0) কল করে;

GP PrintnAt(X,Y,t,n)

[সম্পাদনা]

উপরের মত, X,Y থেকে শুরু করে, করে: {GPR.x=(X);GPR.y=(Y);SDLGPrint(t,n,1,WINDOWW,WINDOWH,0);}

D সংখ্যাটি প্রিন্ট করে। এক্সিকিউট করে {snprintf(STRING$, STRLEN+1, "%.12lG", (ডাবল)D);SDLGPrint(STRING$,STRLEN,1,WINDOWW,WINDOWH,0);}

N অক্ষরে সীমাবদ্ধ একটি সংখ্যা D প্রদর্শন করে। N নির্বিশেষে, অক্ষরের সংখ্যা 12-এর মধ্যে সীমাবদ্ধ। সম্পাদন করে: {snprintf(STRING$, N+1, "%.12lG", (ডাবল)D);SDLGPrint(STRING$,STRLEN,1,WINDOWW,WINDOWH, 0);}

X,Y অবস্থানে D সংখ্যা প্রদর্শন করে। চালায় {GPR.x=(X);GPR.y=(Y);GPr(D)}

GPrnAt(X,Y,D,N)

[সম্পাদনা]

উপরের হিসাবে, N অক্ষরের মধ্যে সীমাবদ্ধ। চালায় {GPR.x=(X);GPR.y=(Y);GPrn(D,N)}

GPrintF(F,...)

[সম্পাদনা]

গ্রাফিক্স উইন্ডোর জন্য C printf কমান্ডের সমতুল্য। এক্সিকিউট করে {snprintf(STRING$, STRLEN+1, F,__VA_ARGS__);SDLGPprint(STRING$,STRLEN,1,WINDOWW,WINDOWH,0);}

GPprintFAt(X,Y,F,...)

[সম্পাদনা]

উপরের হিসাবে, কিন্তু X,Y অবস্থানে প্রদর্শন করে। চালায় {GPR.x=(X);GPR.y=(Y);GPrintF(F,__VA_ARGS__)}

GPColorRGB(r,g,b)

[সম্পাদনা]

RGB ফরম্যাটে দেওয়া GPrint-এর জন্য পাঠ্যের রঙ সেট করে। যেহেতু ফন্টগুলি সাধারণ চিত্র - প্রদর্শিত চিত্রের রঙ পরিবর্তন করে রঙ পরিবর্তন ঘটে। ডিফল্টরূপে, অক্ষরগুলি সাদা, পটভূমি কালো, যা সম্পূর্ণ আলফা স্বচ্ছতায় সেট করা হয় (আসলে কোন অস্বচ্ছতা, যেমন আলফা=0)। SDL_SetTextureColorMod(GPR.T,r,g,b) কল করে;

উপরের হিসাবে, শুধুমাত্র রঙ একটি একক সংখ্যা হিসাবে দেওয়া হয়. এক্সিকিউট করে {ColorC.BAS=c;SDL_SetTextureColorMod(GPR.T,ColorC.SDL.r,ColorC.SDL.g,ColorC.SDL.b);}

ফন্টের প্রস্থ W এবং উচ্চতা H সেট করে। চালায় {GPR.w=W;GPR.h=H;}

ভেক্টর ফন্ট

[সম্পাদনা]

ভেক্টর ফন্ট সমর্থন করার জন্য SDL_ttf, dom প্রয়োজন ডিফল্টরূপে BasicSDL-এ অন্তর্ভুক্ত। এটি এমন ফন্টগুলিকে রূপান্তর করে যা সাবটাইটেলগুলিকে SDL_Surface টাইপের একটি ছবিতে বরাদ্দ করে এবং এটিকে SDLSurface ভেরিয়েবলে বরাদ্দ করে, বেসিক একটি ফাংশন ধারণ করে যা এই ছবিটিকে SDLTexture ভেরিয়েবলের জন্য নির্ধারিত একটি টেক্সচারে রূপান্তর করে এবং এটি পর্দায় প্রদর্শন করে।

LoadFont (Font, FileN, Size)

[সম্পাদনা]

FileN ফাইল থেকে ফন্ট লোড করে, এর সাইজ সেট করে এবং TTF_Font* টাইপের ফন্ট ভেরিয়েবলে বরাদ্দ করে। আপনাকে অবশ্যই একটি পয়েন্টার ভেরিয়েবল আগেই ঘোষণা করতে হবে, যেমন: TTF_Font *Font=NULL;

FontStyle(স্টাইল)

[সম্পাদনা]

বর্তমান ফন্টের শৈলী সেট করে। সম্ভাব্য শৈলী মান: 1=TTF_STYLE_BOLD 2=TTF_STYLE_ITALIC 0=TTF_STYLE_NORMAL 4=TTF_STYLE_UNDERLINE

Text(X,Y,Txt,M)

[সম্পাদনা]

কালার ভেরিয়েবলে সংরক্ষিত রঙে M মোডে X,Y অবস্থানে বর্তমান ফন্টের সাথে পাঠ্য Txt প্রদর্শন করে। রঙ, রঙ, SDL_Color.
কমান্ড দিয়ে সেট করা যেতে পারে প্রদর্শন মোড:
0 - নিয়মিত (কঠিন), দ্রুততম। একটি কালো, স্বচ্ছ পটভূমিতে অক্ষর৷
৷ 1 - ছায়াযুক্ত। পটভূমিটি ColorB ভেরিয়েবলে সংরক্ষিত রঙে রয়েছে, ভেরিয়েবলটি Colors, SDL_Color
কমান্ড দিয়ে সেট করা যেতে পারে 2 - মিশ্রিত। আলফা রঙ মেশানো সক্ষম৷

TextSize(txt,w,h)

[সম্পাদনা]

বর্তমান ফন্টের জন্য txt পাঠ্যের প্রস্থ এবং উচ্চতা দেয়।

TextImg(Txt,T,M)

[সম্পাদনা]

M মোডে স্ট্রিং Txt থেকে একটি চিত্র তৈরি করে এবং এটিকে SDL_Texture* টাইপের একটি T ভেরিয়েবলে বরাদ্দ করে। ভ্যারিয়েবলটি অবশ্যই ঘোষণা করতে হবে।

প্রতিটি টেক্সট তৈরির অপারেশনের পর, এর ইমেজ SDLSsurface-এও থাকে।
সারফেস
উদাহরণ (TTF ফন্ট ফাইল প্রয়োজন):

#include "BasicSDL.h"
TTF_Font *Font;
STRING name;
int x,y,w,h;
SDL_Texture *tex;
SDL_Rect DSTt;
MAIN
x=Rand(-3,3);y=Rand(-3,3);w=Rand(1,4);h=Rand(-3,0);
Input$ (Name:,name)
SDLOpen(0)
LoadFont(Font,"zx81.ttf",32)
FontStyle(TTF_STYLE_ITALIC|TTF_STYLE_UNDERLINE)
SDL_Color(Color.SDL,255,122,0,255)
Text("BASIC C SDL",300,10,0)
CopyImg(SDLTexture,tex)
SDL_Color(Color.SDL,255,122,255,122)
SDL_Color(ColorB.SDL,111,122,255,122)
FontStyle(TTF_STYLE_NORMAL)
TextImg(name,SDLTexture,1)
DSTt.x=200;DSTt.y=100;
DSTt.w=20;DSTt.h=10;
Repeat
  Cls
  PutImg(tex,300,10)
  if (DSTt.x>500) x=-x;
  if (DSTt.x<0) x=-x;
  if (DSTt.y>300) y=-y;
  if (DSTt.y<0) y=-y;
  if (DSTt.w>500) w=-w;
  if (DSTt.w<0) w=-w;
  if (DSTt.h>300) h=-h;
  if (DSTt.h<0) h=-h;
  DSTt.x+=x;DSTt.y+=y;DSTt.w+=w;DSTt.h+=h;
  PutImgSize(SDLTexture,DSTt.x,DSTt.y,DSTt.w,DSTt.h)
  ShowPage
  GetEvents
Until (Quit)
SDLQuit
ENDMAIN