blob: ff208d93e99e92cac552731dcd564c2a033fcba5 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef BorderEdge_h
#define BorderEdge_h
#include "core/style/ComputedStyleConstants.h"
#include "platform/graphics/Color.h"
#include "platform/wtf/Allocator.h"
namespace blink {
struct BorderEdge {
STACK_ALLOCATED();
public:
BorderEdge(float edge_width,
const Color& edge_color,
EBorderStyle edge_style,
bool edge_is_present = true);
BorderEdge();
bool HasVisibleColorAndStyle() const;
bool ShouldRender() const;
bool PresentButInvisible() const;
bool ObscuresBackgroundEdge() const;
bool ObscuresBackground() const;
float UsedWidth() const;
bool SharesColorWith(const BorderEdge& other) const;
EBorderStyle BorderStyle() const { return static_cast<EBorderStyle>(style); }
enum DoubleBorderStripe {
kDoubleBorderStripeOuter,
kDoubleBorderStripeInner
};
float GetDoubleBorderStripeWidth(DoubleBorderStripe) const;
float Width() const { return width_; }
Color color;
bool is_present;
private:
unsigned style : 4; // EBorderStyle
float width_;
};
} // namespace blink
#endif // BorderEdge_h