Example #1
0
    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;
    }
Example #2
0
    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();
    }
Example #3
0
    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;
    }
Example #4
0
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;
}