3.5.9. Flowchart Operasi AddTexture
Seperti yang dijelaskan pada operasi AddSkin bahwa tekstur tidak ditambahkan saat pembuatan obyek skin baru dan ini berarti penambahan tekstur
akan dilakukan secara terpisah yaitu menggunakan operasi AddTexture. Operasi AddTexture juga merupakan operasi pada kelas TumozD3DSkinManager dan
merupakan operasi turunan dari interface TumozSkinManager yang berfungsi untuk menambahkan obyek tekstur baru ke dalam obyek skin.
Pertama-tama operasi dimulai dari memeriksa validitas id skin dari parameter. Karena obyek tekstur dalam obyek skin hanya dibatasi sebanyak 8
stage saja maka proses selanjutnya adalah memeriksa apakah stage tersebut sudah penuh. Setelah itu dilanjutkan lagi dengan pemeriksaan apakah file tekstur ini
sudah ada sebelumnya. Jika file tekstur tersebut belum ada maka perlu dilakukan alokasi
memory untuk pointer obyek tekstur baru. Lalu simpan atribut-atribut yang penting pada obyek tekstur baru seperti status alpha, dan nama tekstur. Operasi
dilanjutkan lagi dengan memuat data dari file tekstur ke dalam buffer grafis pada obyek device menggunakan fungsi bantuan CreateTexture berdasarkan data file
tekstur dan nilai alpha dari parameter. Apabila obyek tekstur menggunakan transparansi atau nilai status alpha
dari parameter adalah true maka nilai atribut-atribut tambahan dimasukkan ke dalam pointer tekstur serta memanggil fungsi bantuan SetAlphaKey dan
SetTransparency . Dan terakhir dilanjutkan dengan menambah jumlah obyek
tekstur yang telah di buat dan menyimpan id tekstur ke dalam obyek skin. Untuk lebih jelasnya flowchart dari operasi ini dapat dilihat pada gambar 3.37. dan 3.38.
STIKOM SURABAYA
Mulai
Cek ID Skin dari
parameter = Jumlah
Skin? Return
TUMOZ_INVALID ID
Ya Cek ID
Texture terakhir dari Skin global pada
indeks ID dari param sudah
ada? Tidak
error: semua texture stage
telah diset Ya
Return TUMOZ_BUFFER
SIZE
Selesai Buat variabel UINT nTex,
bool bTex=false dan pointer TUMOZTEXTURE
pTumozTex nTex = 0
Tidak
nTex Jumlah
Texture
Cek nama pada Texture
global indeks nTex sama dgn nama dr
param? Ya
bTex = true; break;
Ya nTex++
Tidak
bTex == false?
Tidak
Jumlah Texture mod
50 == 0? Ya
Alokasikan 50 slot memory
Texture baru ke pointer Texture
global Ya
Cek apakah nilai pointer
Texture global tidak valid?
Ya error: Add
Texture gagal,
realloc Return
TUMOZ_OUTOF MEMORY
Cek bAlpha dari
parameter sama dgn
true? Tidak
Set nilai Alpha dari Skin global pada index
ID Skin dari parameter menjadi true
Ya Set nilai fAlpha pada
Texture global indeks baru menjadi 1.0f
Set nilai pointer ClrKeys pada Texture global
indeks baru menjadi NULL
Simpan nama Texture dari parameter ke dalam
nama Texture global indeks baru
Panggil CreateTexture dgn
Texture global indeks baru dan bAlpha
sebagai parameter dan simpan HResultnya
Cek apakah HResult
CreateTexture gagal?
error: CreateTexture
gagal Ya
Return HResult Cek bAlpha?
Tidak
Simpan pointer Texture global
indeks baru kedalam pTumozTex
Ya
Simpan atribut Color Keys dari
parameter ke dalam TumozTex
Simpan pointer isi data pTumozTex ke dalam
LPDIRECT3DTEXTURE9 pTex
Tidak Tidak
Tidak
C A
B
Tidak
Gambar 3.37. Flowchart Operasi AddTexture
STIKOM SURABAYA
DWORD dw=0
dw Jumlah Color Keys dari
parameter
Panggil SetAlphaKeys dgn pTex dan ColorKeys
sebagai param dan simpan HResultnya
Ya
Cek apakah Hresult
SetAlphaKeys gagal?
error: SetAlphaKeys
gagal Ya
dw++
Tidak
Return HResult Cek
nilai Alpha dari
param 1.0f?
Tidak
Simpan nilai alpha dari parameter ke
dalam pTumozTex Ya
Panggil SetTransparency dgn pTex dan nilai alpha
sebagai param dan simpan HResultnya
Cek apakah Hresult
SetTransparency gagal?
error: SetTransparency
gagal Ya
Return HResult nTex = Jumlah
Texture yang ada
Tidak Increment
jumlah Texture yang ada
Int i = 0
i 8
Cek apakah ID texture
pada Skin global indeks ke [i] ==
MAX_ID Ya
Set ID Texture pada Skin global indeks ke [i] = nTex
dan break Ya
Return TUMOZ_OK
i++
Tidak C
B
Selesai Tidak
A
Gambar 3.38. Lanjutan Flowchart Operasi AddTexture.
STIKOM SURABAYA
3.5.10. Flowchart Operasi CreateStaticBuffer