HGDIOBJ createBrush(const GiContext* ctx) { if (ctx == NULL) ctx = &m_context; if (m_brush == NULL || m_context.getFillColor() != ctx->getFillColor() || m_context.getFillAlpha() != ctx->getFillAlpha()) { m_context.setFillColor(ctx->getFillColor()); m_context.setFillAlpha(ctx->getFillAlpha()); if (m_brush != NULL) ::DeleteObject(m_brush); if (!ctx->hasFillColor() || ctx->getFillAlpha() < 127) m_brush = ::GetStockObject(NULL_BRUSH); else { GiColor color = m_this->gs()->calcPenColor(ctx->getFillColor()); m_brush = ::CreateSolidBrush(RGB(color.r, color.g, color.b)); } } return m_brush; }
bool setBrush(const GiContext* ctx) { bool changed = !_ctxused[1]; if (ctx && ctx->hasFillColor()) { if (_gictx.getFillColor() != ctx->getFillColor()) { _gictx.setFillColor(ctx->getFillColor()); changed = true; } } if (!ctx) ctx = &_gictx; if (ctx->hasFillColor() && changed) { _ctxused[1] = true; GiColor color = ctx->getFillColor(); if (gs()) color = gs()->calcPenColor(color); CGContextSetRGBFillColor(getContext(), toFloat(color.r), toFloat(color.g), toFloat(color.b), toFloat(color.a)); } return ctx->hasFillColor(); }
G::SolidBrush* createBrush(const GiContext* ctx) { G::SolidBrush* pBrush = NULL; if (ctx == NULL) ctx = &m_context; m_brushNull = !ctx->hasFillColor(); if (!m_brushNull) { if (m_brush == NULL || m_context.getFillColor() != ctx->getFillColor() || m_context.getFillAlpha() != ctx->getFillAlpha()) { m_context.setFillColor(ctx->getFillColor()); m_context.setFillAlpha(ctx->getFillAlpha()); if (m_brush != NULL) { delete m_brush; m_brush = NULL; } GiColor color = gs()->calcPenColor(ctx->getFillColor()); m_brush = new G::SolidBrush( G::Color(ctx->getFillAlpha(), color.r, color.g, color.b)); } pBrush = m_brush; } return pBrush; }
bool MgShape::load(MgShapeFactory* factory, MgStorage* s) { setTag(s->readInt("tag", getTag())); GiContext ctx; ctx.setLineStyle(s->readInt("lineStyle", 0)); ctx.setLineWidth(s->readFloat("lineWidth", 0), true); ctx.setLineColor(GiColor(s->readInt("lineColor", 0xFF000000), true)); ctx.setFillColor(GiColor(s->readInt("fillColor", 0), true)); ctx.setStartArrayHead(s->readInt("startArrayHead", 0)); ctx.setEndArrayHead(s->readInt("endArrayHead", 0)); setContext(ctx); bool ret = shape()->load(factory, s); if (ret) { shape()->update(); } return ret; }