bool GiGraphics::setPen(const GiContext* ctx) { bool changed = !(m_impl->ctxused & 1); if (m_impl->canvas) { if (ctx && (!mgEquals(ctx->getLineWidth(), m_impl->ctx.getLineWidth()) || ctx->isAutoScale() != m_impl->ctx.isAutoScale())) { m_impl->ctx.setLineWidth(ctx->getLineWidth(), ctx->isAutoScale()); changed = true; } if (ctx && ctx->getLineColor() != m_impl->ctx.getLineColor()) { m_impl->ctx.setLineColor(ctx->getLineColor()); changed = true; } if (ctx && ctx->getLineStyle() != m_impl->ctx.getLineStyle()) { m_impl->ctx.setLineStyle(ctx->getLineStyle()); changed = true; } } ctx = &(m_impl->ctx); if (m_impl->canvas && changed) { m_impl->ctxused &= 1; m_impl->canvas->setPen(calcPenColor(ctx->getLineColor()).getARGB(), calcPenWidth(ctx->getLineWidth(), ctx->isAutoScale()), ctx->getLineStyle(), 0); } return !ctx->isNullLine(); }
bool GiGraphics::setBrush(const GiContext* ctx) { bool changed = !(m_impl->ctxused & 2); if (m_impl->canvas) { if (ctx && ctx->getFillColor() != m_impl->ctx.getFillColor()) { m_impl->ctx.setFillColor(ctx->getFillColor()); changed = true; } } ctx = &(m_impl->ctx); if (m_impl->canvas && changed) { m_impl->ctxused &= 2; m_impl->canvas->setBrush(calcPenColor(ctx->getFillColor()).getARGB(), 0); } return ctx->hasFillColor(); }
bool GiGraphics::setPen(const GiContext* ctx) { bool changed = !(m_impl->ctxused & 1); if (m_impl->canvas) { if (ctx && (!mgEquals(ctx->getLineWidth(), m_impl->ctx.getLineWidth()) || ctx->isAutoScale() != m_impl->ctx.isAutoScale())) { m_impl->ctx.setLineWidth(ctx->getLineWidth(), ctx->isAutoScale()); changed = true; } if (ctx && !mgEquals(ctx->getExtraWidth(), m_impl->ctx.getExtraWidth())) { m_impl->ctx.setExtraWidth(ctx->getExtraWidth()); changed = true; } if (ctx && ctx->getLineColor() != m_impl->ctx.getLineColor()) { m_impl->ctx.setLineColor(ctx->getLineColor()); changed = true; } if (ctx && ctx->getLineStyleEx() != m_impl->ctx.getLineStyleEx()) { m_impl->ctx.setLineStyle(ctx->getLineStyleEx(), true); changed = true; } } ctx = &(m_impl->ctx); if (m_impl->canvas && changed) { m_impl->ctxused &= 1; float w = calcPenWidth(ctx->getLineWidth(), ctx->isAutoScale()); float orgw = ctx->getLineWidth(); orgw = (orgw < -0.1f && ctx->isAutoScale()) ? orgw - 1e4f : orgw; m_impl->canvas->setPen(calcPenColor(ctx->getLineColor()).getARGB(), w + ctx->getExtraWidth(), ctx->getLineStyleEx(), mgMax(m_impl->phase, 0.f), orgw); } return !ctx->isNullLine(); }