chromium/ui/gfx/vector_icon_types.h

// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_GFX_VECTOR_ICON_TYPES_H_
#define UI_GFX_VECTOR_ICON_TYPES_H_

#include "base/containers/span.h"
#include "third_party/skia/include/core/SkScalar.h"
#include "ui/gfx/animation/tween.h"

namespace gfx {

// This macro allows defining the list of commands in this file, then pulling
// them each in to the template files via using-declarations.  Files which want
// to do this should do the following:
//   #define DECLARE_VECTOR_COMMAND(x) using gfx::x;
//   DECLARE_VECTOR_COMMANDS
// The alternative would be to have the template files pull in the whole gfx
// namespace via using-directives, which is banned by the style guide.
#define DECLARE_VECTOR_COMMANDS

#define DECLARE_VECTOR_COMMAND(x)

// A command to Skia.
enum CommandType {};

#undef DECLARE_VECTOR_COMMAND

// A POD that describes either a path command or an argument for it.
struct PathElement {};

// Describes the drawing commands for a single vector icon at a particular pixel
// size or range of sizes.
struct VectorIconRep {};

// A vector icon that stores one or more representations to be used for various
// scale factors and pixel dimensions.
struct VectorIcon {};

}  // namespace gfx

#endif  // UI_GFX_VECTOR_ICON_TYPES_H_