clclear.c

00001 #include <cl.h>
00002 
00003 /*
00004   clClear*()
00005 
00006   
00007 */
00008 
00009 CLimage* clClearImage(CLimage* image)
00010 {
00011     if(image->data)
00012         free(image->data);
00013 
00014     return image;
00015 }
00016 
00017 CLlight* clClearLight(CLlight* light)
00018 {
00019     glDeleteLists(light->display_list, 1);
00020 
00021     return light;
00022 }
00023 
00024 CLmaterial* clClearMaterial(CLmaterial* material)
00025 {
00026     /* MacOSX has a problem with deleting list zero, so this check was added, seems sensible */
00027     if (material->display_list)
00028     {
00029         glDeleteLists(material->display_list, 1);
00030     }
00031     
00032     return material;
00033 }
00034 
00035 CLtexture* clClearTexture(CLtexture* texture)
00036 {
00037     clClearImage(&texture->image);
00038         
00039     if (texture->texture_object)
00040     {
00041         glDeleteTextures(1, &texture->texture_object);
00042     }
00043     
00044     return texture;
00045 }
00046 
00047 CLprimitiveset* clClearPrimitiveSet(CLprimitiveset* primitiveset)
00048 {
00049     free(primitiveset->indices);
00050 
00051     return primitiveset;
00052 }
00053 
00054 CLmesh* clClearMesh(CLmesh* mesh)
00055 {
00056     unsigned int i;
00057 
00058     free(mesh->colour);
00059 
00060     free(mesh->vertices);
00061     free(mesh->colours);
00062     free(mesh->normals);
00063     free(mesh->texcoords);
00064     free(mesh->edgeflags);
00065 
00066     for (i = 0; i < mesh->num_primitivesets; i++)
00067     {   
00068         clDeletePrimitiveSet(mesh->primitivesets[i]);
00069     }
00070     free(mesh->primitivesets);
00071     
00072     /* MacOSX has a problem with deleting list zero, so this check was added, seems sensible */
00073     if (mesh->display_list)
00074     {
00075         glDeleteLists(mesh->display_list, 1);
00076     }
00077     
00078     return mesh;
00079 }
00080 
00081 CLcontext* clClearContext(CLcontext* context)
00082 {
00083     unsigned int i;
00084     
00085     for (i = 0 ; i < context->num_materials ; i++)
00086     {
00087         clDeleteMaterial(context->materials[i]);
00088     }
00089     free(context->materials);
00090     
00091     for (i = 0 ; i < context->num_textures ; i++)
00092     {
00093         clDeleteTexture(context->textures[i]);
00094     }
00095     free(context->textures);
00096   
00097     for (i = 0 ; i < context->num_lights ; i++)
00098     {
00099         clDeleteLight(context->lights[i]);
00100     }
00101     free(context->lights);
00102     
00103     for (i = 0 ; i < context->num_models ; i++)
00104     {
00105         clDeleteModel(context->models[i]);
00106     }
00107     free(context->models);
00108     
00109     return context;
00110 }
00111 
00112 CLmodel* clClearModel(CLmodel* model)
00113 {
00114     unsigned int i;
00115 
00116     for (i = 0 ; i < model->num_meshes ; i++)
00117     {
00118         clDeleteMesh(model->meshes[i]);
00119     }
00120     free(model->meshes);
00121     
00122     return model;
00123 }

Generated on Thu Dec 27 13:53:41 2007 for CL by  doxygen 1.4.6