Flowchart Operasi AddTexture Flowchart Diagram

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