void SHPaint_ctor(SHPaint *p) { int i; p->type = VG_PAINT_TYPE_COLOR; CSET(p->color, 0,0,0,1); SH_INITOBJ(SHStopArray, p->instops); SH_INITOBJ(SHStopArray, p->stops); p->premultiplied = VG_FALSE; p->spreadMode = VG_COLOR_RAMP_SPREAD_PAD; p->tilingMode = VG_TILE_FILL; for (i=0; i<4; ++i) p->linearGradient[i] = 0.0f; for (i=0; i<5; ++i) p->radialGradient[i] = 0.0f; p->pattern = VG_INVALID_HANDLE; glGenTextures(1, &p->texture); glBindTexture(GL_TEXTURE_1D, p->texture); glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA, SH_GRADIENT_TEX_SIZE, 0, GL_RGBA, GL_FLOAT, NULL); }
void VGContext_ctor(VGContext *c) { /* Surface info */ c->surfaceWidth = 0; c->surfaceHeight = 0; /* GetString info */ strncpy(c->vendor, "Ivan Leben", sizeof(c->vendor)); strncpy(c->renderer, "ShivaVG 0.1.0", sizeof(c->renderer)); strncpy(c->version, "1.0", sizeof(c->version)); strncpy(c->extensions, "", sizeof(c->extensions)); /* Mode settings */ c->matrixMode = VG_MATRIX_PATH_USER_TO_SURFACE; c->fillRule = VG_EVEN_ODD; c->imageQuality = VG_IMAGE_QUALITY_FASTER; c->renderingQuality = VG_RENDERING_QUALITY_BETTER; c->blendMode = VG_BLEND_SRC_OVER; c->imageMode = VG_DRAW_IMAGE_NORMAL; /* Scissor rectangles */ SH_INITOBJ(SHRectArray, c->scissor); c->scissoring = VG_FALSE; c->masking = VG_FALSE; /* Stroke parameters */ c->strokeLineWidth = 1.0f; c->strokeCapStyle = VG_CAP_BUTT; c->strokeJoinStyle = VG_JOIN_MITER; c->strokeMiterLimit = 4.0f; c->strokeDashPhase = 0.0f; c->strokeDashPhaseReset = VG_FALSE; SH_INITOBJ(SHFloatArray, c->strokeDashPattern); /* Edge fill color for vgConvolve and pattern paint */ CSET(c->tileFillColor, 0,0,0,0); /* Color for vgClear */ CSET(c->clearColor, 0,0,0,0); /* Color components layout inside pixel */ c->pixelLayout = VG_PIXEL_LAYOUT_UNKNOWN; /* Source format for image filters */ c->filterFormatLinear = VG_FALSE; c->filterFormatPremultiplied = VG_FALSE; c->filterChannelMask = VG_RED|VG_GREEN|VG_BLUE|VG_ALPHA; /* Matrices */ SH_INITOBJ(SHMatrix3x3, c->pathTransform); SH_INITOBJ(SHMatrix3x3, c->imageTransform); SH_INITOBJ(SHMatrix3x3, c->fillTransform); SH_INITOBJ(SHMatrix3x3, c->strokeTransform); /* Paints */ c->fillPaint = NULL; c->strokePaint = NULL; SH_INITOBJ(SHPaint, c->defaultPaint); /* Error */ c->error = VG_NO_ERROR; /* Resources */ SH_INITOBJ(SHPathArray, c->paths); SH_INITOBJ(SHPaintArray, c->paints); SH_INITOBJ(SHImageArray, c->images); shLoadExtensions(c); }