cldefault.c

00001 #include <cl.h>
00002 
00003 /*
00004   clDefault: set a struct to some meaningful default
00005              defaults usually represent OpenGL defaults
00006              do nothing and return NULL if input is NULL
00007 */
00008  
00009 CLcolour* clDefaultColour(CLcolour* colour)
00010 { 
00011     if (!colour)
00012     {
00013         return 0;
00014     }
00015     
00016     colour->r = 1.0f;
00017     colour->g = 1.0f;
00018     colour->b = 1.0f;
00019     colour->a = 1.0f;
00020     
00021     return colour;
00022 }
00023 
00024 CLvertex* clDefaultVertex(CLvertex* vertex)
00025 {
00026     if (!vertex)
00027     {
00028         return 0;
00029     }
00030     
00031     vertex->x = 0.0f;
00032     vertex->y = 0.0f;
00033     vertex->z = 0.0f;
00034     
00035     return vertex;
00036 }
00037 
00038 CLnormal* clDefaultNormal(CLnormal* normal)
00039 {
00040     if (!normal)
00041     {
00042         return 0;
00043     }
00044     
00045     normal->i = 0.0f;
00046     normal->j = 0.0f;
00047     normal->k = 1.0f;
00048     
00049     return normal;
00050 }
00051 
00052 CLtexcoord* clDefaultTexCoord(CLtexcoord* texcoord)
00053 {
00054     if (!texcoord)
00055     {
00056         return 0;
00057     }
00058     
00059     texcoord->s = 0.0f;
00060     texcoord->t = 0.0f;
00061     
00062     return texcoord;
00063 }
00064 
00065 CLedgeflag* clDefaultEdgeFlag(CLedgeflag* edgeflag)
00066 {
00067     if (!edgeflag)
00068     {
00069         return 0;
00070     }
00071     
00072     *edgeflag = GL_FALSE;
00073     
00074     return edgeflag;
00075 }
00076 
00077 CLmatrix* clDefaultMatrix(CLmatrix* matrix)
00078 {
00079     if (!matrix)
00080     {
00081         return 0;
00082     }
00083 
00084     matrix->m00 = 1.0f;
00085     matrix->m01 = 0.0f;
00086     matrix->m02 = 0.0f;
00087     matrix->m03 = 0.0f;
00088     matrix->m10 = 0.0f;
00089     matrix->m11 = 1.0f;
00090     matrix->m12 = 0.0f;
00091     matrix->m13 = 0.0f;
00092     matrix->m20 = 0.0f;
00093     matrix->m21 = 0.0f;
00094     matrix->m22 = 1.0f;
00095     matrix->m23 = 0.0f;
00096     matrix->m30 = 0.0f;
00097     matrix->m31 = 0.0f;
00098     matrix->m32 = 0.0f;
00099     matrix->m33 = 1.0f;
00100     
00101     return matrix;
00102 }
00103 
00104 CLimage* clDefaultImage(CLimage* image)
00105 {
00106     GLubyte data[16];
00107     
00108     if (!image)
00109     {
00110         return 0;
00111     }
00112     
00113     clClearImage(image);
00114     
00115     image->width = 2;
00116     image->height = 2;
00117     image->format = GL_RGBA;
00118     image->type = GL_UNSIGNED_BYTE;
00119     
00120     data[0]  = 255; 
00121     data[1]  = 255; 
00122     data[2]  = 255; 
00123     data[3]  = 255;
00124     data[4]  = 255; 
00125     data[5]  = 0; 
00126     data[6]  = 0; 
00127     data[7]  = 255;
00128     data[8]  = 0; 
00129     data[9]  = 255; 
00130     data[10] = 0; 
00131     data[11] = 255;
00132     data[12] = 0; 
00133     data[13] = 0; 
00134     data[14] = 255; 
00135     data[15] = 255;
00136     
00137     image->data = (void*)CL_MALLOC(16 * sizeof(GLubyte));
00138     image->data = (void*)CL_MEMCPY(image->data, data, 16 * sizeof(GLubyte));
00139     
00140     return image;
00141 }
00142 
00143 CLlight* clDefaultLight(CLlight* light)
00144 {
00145     if (!light)
00146     {
00147         return 0;
00148     }
00149     
00150     clClearLight(light);
00151     
00152     light->id = GL_LIGHT0;
00153     
00154     light->ambient.r = 0.0f;
00155     light->ambient.g = 0.0f;
00156     light->ambient.b = 0.0f;
00157     light->ambient.a = 1.0f;
00158     
00159     light->diffuse.r = 1.0f;
00160     light->diffuse.g = 1.0f;
00161     light->diffuse.b = 1.0f;
00162     light->diffuse.a = 1.0f;
00163     
00164     light->specular.r = 1.0f;
00165     light->specular.g = 1.0f;
00166     light->specular.b = 1.0f;
00167     light->specular.a = 1.0f;
00168     
00169     light->position[0] = 0.0f;
00170     light->position[1] = 0.0f;
00171     light->position[2] = 1.0f;
00172     light->position[3] = 0.0f;
00173     
00174     light->spot_direction.i = 0.0f;
00175     light->spot_direction.j = 0.0f;
00176     light->spot_direction.k = -1.0f;
00177     
00178     light->spot_exponent = 0.0f;
00179     light->spot_cutoff = 180.0f;
00180     light->constant_attenuation = 1.0f;
00181     light->linear_attenuation = 0.0f;
00182     light->quadratic_attenuation = 0.0f;
00183     
00184     light->display_list = 0;
00185     
00186     return light;
00187 }
00188 
00189 CLmaterial* clDefaultMaterial(CLmaterial* material)
00190 {
00191     if (!material)
00192     {
00193         return 0;
00194     }
00195     
00196     clClearMaterial(material);
00197     
00198     material->face = GL_FRONT;
00199     
00200     material->ambient.r = 0.2f;
00201     material->ambient.g = 0.2f;
00202     material->ambient.b = 0.2f;
00203     material->ambient.a = 1.0f;
00204     
00205     material->diffuse.r = 0.8f;
00206     material->diffuse.g = 0.8f;
00207     material->diffuse.b = 0.8f;
00208     material->diffuse.a = 1.0f;
00209     
00210     material->specular.r = 0.0f;
00211     material->specular.g = 0.0f;
00212     material->specular.b = 0.0f;
00213     material->specular.a = 1.0f;
00214     
00215     material->emission.r = 0.0f;
00216     material->emission.g = 0.0f;
00217     material->emission.b = 0.0f;
00218     material->emission.a = 1.0f;
00219     
00220     material->shininess = 0.0f;
00221     
00222     material->display_list = 0;
00223     
00224     return material;
00225 }
00226 
00227 CLtexture* clDefaultTexture(CLtexture* texture)
00228 {
00229     if (!texture)
00230     {
00231         return 0;
00232     }
00233     
00234     clClearTexture(texture);
00235     
00236     clDefaultImage(&texture->image);
00237     
00238     texture->min_filter = GL_NEAREST;
00239     texture->mag_filter = GL_NEAREST;
00240     
00241     /*  
00242         texture->min_filter = GL_LINEAR_MIPMAP_LINEAR;
00243         texture->mag_filter = GL_LINEAR;
00244     */
00245     
00246     texture->wrap_s = GL_REPEAT;
00247     texture->wrap_t = GL_REPEAT;
00248     
00249     texture->texture_object = 0;
00250     
00251     return texture;
00252 }
00253 
00254 CLprimitiveset* clDefaultPrimitiveSet(CLprimitiveset* primitiveset)
00255 {
00256     if (!primitiveset)
00257     {
00258         return 0;
00259     }
00260 
00261     clClearPrimitiveSet(primitiveset);
00262     
00263     primitiveset->mode = GL_TRIANGLES;
00264     primitiveset->num_indices = 0;
00265     primitiveset->indices = 0;
00266     
00267     return primitiveset;
00268 }
00269 
00270 CLmesh* clDefaultMesh(CLmesh* mesh)
00271 {
00272     if (!mesh)
00273     {
00274         return 0;
00275     }
00276 
00277     clClearMesh(mesh);
00278     
00279     mesh->context = 0;
00280     
00281     mesh->colour = 0;
00282     mesh->material_index = -1;
00283     mesh->texture_index = -1;
00284     mesh->texture_env_mode = GL_MODULATE;
00285     
00286     mesh->num_vertices = 0;
00287     mesh->vertices = 0;
00288     mesh->colours = 0;
00289     mesh->normals = 0;
00290     mesh->texcoords = 0;
00291     mesh->edgeflags = 0;
00292     
00293     mesh->num_primitivesets = 0;
00294     mesh->primitivesets = 0;
00295     
00296     mesh->display_list = 0;
00297     
00298     return mesh;
00299 }
00300 
00301 CLcontext* clDefaultContext(CLcontext* context)
00302 {
00303     if (!context)
00304     {
00305         return 0;
00306     }
00307     
00308     clClearContext(context);
00309     
00310     context->num_materials = 0;
00311     context->materials = 0;
00312     
00313     context->num_lights = 0;
00314     context->lights = 0;
00315     
00316     context->num_textures = 0;
00317     context->textures = 0;
00318     
00319     context->num_models = 0;
00320     context->models = 0;
00321     
00322     return context;
00323 }
00324 
00325 CLmodel* clDefaultModel(CLmodel* model)
00326 {
00327     if (!model)
00328     {
00329         return 0;
00330     }
00331     
00332     clClearModel(model);
00333     
00334     model->context = 0;
00335     
00336     model->num_meshes = 0;
00337     model->meshes = 0;
00338     
00339     return model;
00340 }

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