mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
237 lines
7.3 KiB
C++
237 lines
7.3 KiB
C++
// Copyright 2015 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.
|
|
|
|
#include "mojo/services/gfx/composition/cpp/formatting.h"
|
|
|
|
#include <ostream>
|
|
|
|
namespace mojo {
|
|
namespace gfx {
|
|
namespace composition {
|
|
|
|
class Delimiter {
|
|
public:
|
|
Delimiter(std::ostream& os) : os_(os) {}
|
|
|
|
std::ostream& Append() {
|
|
if (need_comma_)
|
|
os_ << ", ";
|
|
else
|
|
need_comma_ = true;
|
|
return os_;
|
|
}
|
|
|
|
private:
|
|
std::ostream& os_;
|
|
bool need_comma_ = false;
|
|
};
|
|
|
|
std::ostream& operator<<(std::ostream& os,
|
|
const mojo::gfx::composition::SceneToken& value) {
|
|
return os << "{value=" << value.value << "}";
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os,
|
|
const mojo::gfx::composition::SceneUpdate& value) {
|
|
os << "{";
|
|
Delimiter d(os);
|
|
if (value.clear_resources) {
|
|
d.Append() << "clear_resources=true";
|
|
}
|
|
if (value.clear_nodes) {
|
|
d.Append() << "clear_nodes=true";
|
|
}
|
|
if (value.resources) {
|
|
d.Append() << "resources=" << value.resources;
|
|
}
|
|
if (value.nodes) {
|
|
d.Append() << "nodes=" << value.nodes;
|
|
}
|
|
os << "}";
|
|
return os;
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os,
|
|
const mojo::gfx::composition::SceneMetadata& value) {
|
|
return os << "{version=" << value.version
|
|
<< ", presentation_time=" << value.presentation_time << "}";
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os,
|
|
const mojo::gfx::composition::Resource& value) {
|
|
os << "{";
|
|
if (value.is_scene()) {
|
|
os << "scene=" << value.get_scene();
|
|
} else if (value.is_mailbox_texture()) {
|
|
os << "mailbox_texture=" << value.get_mailbox_texture();
|
|
} else {
|
|
os << "???";
|
|
}
|
|
return os << "}";
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os,
|
|
const mojo::gfx::composition::SceneResource& value) {
|
|
return os << "{scene_token=" << value.scene_token << "}";
|
|
}
|
|
|
|
std::ostream& operator<<(
|
|
std::ostream& os,
|
|
const mojo::gfx::composition::MailboxTextureResource& value) {
|
|
return os << "{sync_point=" << value.sync_point << ", size=" << value.size
|
|
<< "}";
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os,
|
|
const mojo::gfx::composition::Node& value) {
|
|
os << "{";
|
|
Delimiter d(os);
|
|
if (value.content_transform)
|
|
d.Append() << "content_transform=" << value.content_transform;
|
|
if (value.content_clip)
|
|
d.Append() << "content_clip=" << value.content_clip;
|
|
if (value.hit_test_behavior)
|
|
d.Append() << "hit_test_behavior=" << value.hit_test_behavior;
|
|
if (value.op)
|
|
d.Append() << "op=" << value.op;
|
|
d.Append() << "combinator=" << &value.combinator;
|
|
if (value.child_node_ids)
|
|
d.Append() << "child_node_ids=" << value.child_node_ids;
|
|
return os << "}";
|
|
}
|
|
|
|
std::ostream& operator<<(
|
|
std::ostream& os,
|
|
const mojo::gfx::composition::Node::Combinator* value) {
|
|
switch (*value) {
|
|
case mojo::gfx::composition::Node::Combinator::MERGE:
|
|
return os << "MERGE";
|
|
case mojo::gfx::composition::Node::Combinator::PRUNE:
|
|
return os << "PRUNE";
|
|
case mojo::gfx::composition::Node::Combinator::FALLBACK:
|
|
return os << "FALLBACK";
|
|
default:
|
|
return os << "???";
|
|
}
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os,
|
|
const mojo::gfx::composition::NodeOp& value) {
|
|
os << "{";
|
|
if (value.is_rect()) {
|
|
os << "rect=" << value.get_rect();
|
|
} else if (value.is_image()) {
|
|
os << "image=" << value.get_image();
|
|
} else if (value.is_scene()) {
|
|
os << "scene=" << value.get_scene();
|
|
} else if (value.is_layer()) {
|
|
os << "layer=" << value.get_layer();
|
|
} else {
|
|
os << "???";
|
|
}
|
|
return os << "}";
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os,
|
|
const mojo::gfx::composition::RectNodeOp& value) {
|
|
return os << "{content_rect=" << value.content_rect
|
|
<< ", color=" << value.color << "}";
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os,
|
|
const mojo::gfx::composition::ImageNodeOp& value) {
|
|
return os << "{content_rect=" << value.content_rect
|
|
<< ", image_rect=" << value.image_rect
|
|
<< ", image_resource_id=" << value.image_resource_id
|
|
<< ", blend=" << value.blend << "}";
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os,
|
|
const mojo::gfx::composition::SceneNodeOp& value) {
|
|
return os << "{scene_resource_id=" << value.scene_resource_id
|
|
<< ", scene_version=" << value.scene_version << "}";
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os,
|
|
const mojo::gfx::composition::LayerNodeOp& value) {
|
|
return os << "{layer_size=" << value.layer_size << ", blend=" << value.blend
|
|
<< "}";
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os,
|
|
const mojo::gfx::composition::Color& value) {
|
|
return os << "{red=" << static_cast<int>(value.red)
|
|
<< ", green=" << static_cast<int>(value.green)
|
|
<< ", blue=" << static_cast<int>(value.blue)
|
|
<< ", alpha=" << static_cast<int>(value.alpha) << "}";
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os,
|
|
const mojo::gfx::composition::Blend& value) {
|
|
return os << "{alpha=" << static_cast<int>(value.alpha) << "}";
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os,
|
|
const mojo::gfx::composition::FrameInfo& value) {
|
|
return os << "{frame_time=" << value.frame_time
|
|
<< ", frame_interval=" << value.frame_interval
|
|
<< ", frame_deadline=" << value.frame_deadline << "}";
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os,
|
|
const mojo::gfx::composition::HitTestBehavior& value) {
|
|
return os << "{visibility=" << &value.visibility << ", prune" << value.prune
|
|
<< ", hit_rect=" << value.hit_rect << "}";
|
|
}
|
|
|
|
std::ostream& operator<<(
|
|
std::ostream& os,
|
|
const mojo::gfx::composition::HitTestBehavior::Visibility* value) {
|
|
switch (*value) {
|
|
case mojo::gfx::composition::HitTestBehavior::Visibility::OPAQUE:
|
|
return os << "OPAQUE";
|
|
case mojo::gfx::composition::HitTestBehavior::Visibility::TRANSLUCENT:
|
|
return os << "TRANSLUCENT";
|
|
case mojo::gfx::composition::HitTestBehavior::Visibility::INVISIBLE:
|
|
return os << "INVISIBLE";
|
|
default:
|
|
return os << "???";
|
|
}
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os,
|
|
const mojo::gfx::composition::HitTestResult& value) {
|
|
return os << "{root=" << value.root << "}";
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os,
|
|
const mojo::gfx::composition::Hit& value) {
|
|
os << "{";
|
|
if (value.is_scene()) {
|
|
os << "scene=" << value.get_scene();
|
|
} else if (value.is_node()) {
|
|
os << "node=" << value.get_node();
|
|
} else {
|
|
os << "???";
|
|
}
|
|
return os << "}";
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os,
|
|
const mojo::gfx::composition::SceneHit& value) {
|
|
return os << "{scene_token=" << value.scene_token
|
|
<< ", scene_version=" << value.scene_version
|
|
<< ", hits=" << value.hits << "}";
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os,
|
|
const mojo::gfx::composition::NodeHit& value) {
|
|
return os << "{node_id=" << value.node_id
|
|
<< ", intersection=" << value.intersection << "}";
|
|
}
|
|
|
|
} // namespace composition
|
|
} // namespace gfx
|
|
} // namespace mojo
|