Ejemplo n.º 1
0
FloatPoint floatPointForCenterCoordinate(const BasicShapeCenterCoordinate& centerX, const BasicShapeCenterCoordinate& centerY, FloatSize boxSize)
{
    FloatPoint p;
    float offset = floatValueForLength(centerX.length(), boxSize.width());
    switch (centerX.keyword()) {
    case BasicShapeCenterCoordinate::None:
    case BasicShapeCenterCoordinate::Left:
        p.setX(offset);
        break;
    case BasicShapeCenterCoordinate::Right:
        p.setX(boxSize.width() - offset);
        break;
    default:
        ASSERT_NOT_REACHED();
    }

    offset = floatValueForLength(centerY.length(), boxSize.height());
    switch (centerY.keyword()) {
    case BasicShapeCenterCoordinate::None:
    case BasicShapeCenterCoordinate::Top:
        p.setY(offset);
        break;
    case BasicShapeCenterCoordinate::Bottom:
        p.setY(boxSize.height() - offset);
        break;
    default:
        ASSERT_NOT_REACHED();
    }

    return p;
}
Ejemplo n.º 2
0
static PassRefPtr<CSSPrimitiveValue> valueForCenterCoordinate(CSSValuePool& pool, const RenderStyle& style, const BasicShapeCenterCoordinate& center)
{
    CSSValueID keyword = CSSValueInvalid;
    switch (center.keyword()) {
    case BasicShapeCenterCoordinate::None:
        return pool.createValue(center.length(), style);
    case BasicShapeCenterCoordinate::Top:
        keyword = CSSValueTop;
        break;
    case BasicShapeCenterCoordinate::Right:
        keyword = CSSValueRight;
        break;
    case BasicShapeCenterCoordinate::Bottom:
        keyword = CSSValueBottom;
        break;
    case BasicShapeCenterCoordinate::Left:
        keyword = CSSValueLeft;
        break;
    }

    return pool.createValue(Pair::create(pool.createIdentifierValue(keyword), pool.createValue(center.length(), style), Pair::DropIdenticalValues));
}