blob: a13e770eda9889da6406d22ec521757e32f846a7 [file] [log] [blame]
// Copyright 2017 The Fuchsia 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 "garnet/lib/ui/scenic/util/print_command.h"
#include "lib/fxl/logging.h"
using fuchsia::ui::gfx::Command;
using fuchsia::ui::gfx::CommandPtr;
using fuchsia::ui::gfx::RendererParam;
using fuchsia::ui::gfx::ResourceArgs;
using fuchsia::ui::gfx::ShadowTechnique;
using fuchsia::ui::gfx::Value;
std::ostream& operator<<(std::ostream& stream,
const fuchsia::ui::gfx::Command& command) {
switch (command.Which()) {
case Command::Tag::kCreateResource:
return stream << command.create_resource();
case Command::Tag::kExportResource:
return stream << "ExportResource";
case Command::Tag::kImportResource:
return stream << "ImportResource";
case Command::Tag::kReleaseResource:
return stream << "ReleaseResource";
case Command::Tag::kSetTranslation:
return stream << "SetTranslation";
case Command::Tag::kSetScale:
return stream << "SetScale";
case Command::Tag::kSetRotation:
return stream << "SetRotation";
case Command::Tag::kSetAnchor:
return stream << "SetAnchor";
case Command::Tag::kSetSize:
return stream << "SetSize";
case Command::Tag::kSetTag:
return stream << "SetTag";
case Command::Tag::kAddChild:
return stream << "AddChild";
case Command::Tag::kAddPart:
return stream << "AddPart";
case Command::Tag::kTakeSnapshotCmd:
return stream << "TakeSnapshot";
case Command::Tag::kDetach:
return stream << "Detach";
case Command::Tag::kDetachChildren:
return stream << "DetachChildren";
case Command::Tag::kSetOpacity:
return stream << "SetOpacity";
case Command::Tag::kSendSizeChangeHintHack:
return stream << "SendChildSizeHintHack";
case Command::Tag::kSetShape:
return stream << "SetShape";
case Command::Tag::kSetMaterial:
return stream << "SetMaterial";
case Command::Tag::kSetClip:
return stream << "SetClip";
case Command::Tag::kSetClipPlanes:
return stream << "SetClipPlanes";
case Command::Tag::kSetHitTestBehavior:
return stream << "SetHitTestBehavior";
case Command::Tag::kSetViewProperties:
return stream << "SetViewProperties";
case Command::Tag::kSetCamera:
return stream << "SetCamera";
case Command::Tag::kSetCameraTransform:
return stream << "SetCameraTransform";
case Command::Tag::kSetStereoCameraProjection:
return stream << "SetStereoCameraProjection";
case Command::Tag::kSetCameraProjection:
return stream << "SetCameraProjection";
case fuchsia::ui::gfx::Command::Tag::kSetCameraPoseBuffer:
return stream << "SetCameraPoseBuffer";
case Command::Tag::kSetLightColor:
return stream << "SetLightColor";
case Command::Tag::kSetLightDirection:
return stream << "SetLightDirection";
case Command::Tag::kSetPointLightPosition:
return stream << "SetPointLightPosition";
case Command::Tag::kSetPointLightFalloff:
return stream << "SetPointLightFalloff";
case Command::Tag::kAddLight:
return stream << "AddLight";
case Command::Tag::kScene_AddAmbientLight:
return stream << "AddAmbientLight";
case Command::Tag::kScene_AddDirectionalLight:
return stream << "AddDirectionalLight";
case Command::Tag::kScene_AddPointLight:
return stream << "AddPointLight";
case Command::Tag::kDetachLight:
return stream << "DetachLight";
case Command::Tag::kDetachLights:
return stream << "DetachLights";
case Command::Tag::kSetTexture:
return stream << "SetTexture";
case Command::Tag::kSetColor:
return stream << "SetColor";
case Command::Tag::kBindMeshBuffers:
return stream << "BindMeshBuffers";
case Command::Tag::kAddLayer:
return stream << "AddLayer";
case Command::Tag::kRemoveLayer:
return stream << "RemoveLayer";
case Command::Tag::kRemoveAllLayers:
return stream << "RemoveAllLayers";
case Command::Tag::kSetLayerStack:
return stream << "SetLayerStack";
case Command::Tag::kSetRenderer:
return stream << "SetRenderer";
case Command::Tag::kSetRendererParam:
return stream << command.set_renderer_param();
case Command::Tag::kSetEventMask:
return stream << "SetEventMask";
case Command::Tag::kSetLabel:
return stream << "SetLabel";
case Command::Tag::kSetDisableClipping:
return stream << "SetDisableClipping";
case Command::Tag::kSetImportFocus:
return stream << "SetImportFocus";
case Command::Tag::Invalid:
return stream << "Invalid";
}
}
std::ostream& operator<<(std::ostream& stream,
const fuchsia::ui::gfx::CreateResourceCmd& command) {
stream << "CreateResourceCmd(id:" << command.id << " ";
switch (command.resource.Which()) {
case ResourceArgs::Tag::kMemory:
stream << "Memory";
break;
case ResourceArgs::Tag::kImage:
stream << "Image";
break;
case ResourceArgs::Tag::kImagePipe:
stream << "ImagePipe";
break;
case ResourceArgs::Tag::kBuffer:
stream << "Buffer";
break;
case ResourceArgs::Tag::kScene:
stream << "Scene";
break;
case ResourceArgs::Tag::kCamera:
stream << "Camera";
break;
case ResourceArgs::Tag::kStereoCamera:
stream << "StereoCamera";
break;
case ResourceArgs::Tag::kRenderer:
stream << "Renderer";
break;
case ResourceArgs::Tag::kAmbientLight:
stream << "AmbientLight";
break;
case ResourceArgs::Tag::kDirectionalLight:
stream << "DirectionalLight";
break;
case ResourceArgs::Tag::kPointLight:
stream << "PointLight";
break;
case ResourceArgs::Tag::kRectangle:
stream << "Rectangle";
break;
case ResourceArgs::Tag::kRoundedRectangle:
stream << "RoundedRectangle";
break;
case ResourceArgs::Tag::kCircle:
stream << "Circle";
break;
case ResourceArgs::Tag::kMesh:
stream << "Mesh";
break;
case ResourceArgs::Tag::kMaterial:
stream << "Material";
break;
case ResourceArgs::Tag::kView:
stream << "View";
break;
case ResourceArgs::Tag::kViewHolder:
stream << "ViewHolder";
break;
case ResourceArgs::Tag::kClipNode:
stream << "ClipNode";
break;
case ResourceArgs::Tag::kEntityNode:
stream << "EntityNode";
break;
case ResourceArgs::Tag::kOpacityNode:
stream << "OpacityNode";
break;
case ResourceArgs::Tag::kShapeNode:
stream << "ShapeNode";
break;
case ResourceArgs::Tag::kCompositor:
stream << "Compositor";
break;
case ResourceArgs::Tag::kDisplayCompositor:
stream << "DisplayCompositor";
break;
case ResourceArgs::Tag::kImagePipeCompositor:
stream << "ImagePipeCompositor";
break;
case ResourceArgs::Tag::kLayerStack:
stream << "LayerStack";
break;
case ResourceArgs::Tag::kLayer:
stream << "Layer";
break;
case ResourceArgs::Tag::kVariable:
stream << "Variable";
break;
case ResourceArgs::Tag::Invalid:
stream << "Unknown";
break;
}
return stream << ")";
}
std::ostream& operator<<(std::ostream& stream,
const fuchsia::ui::gfx::SetRendererParamCmd& command) {
stream << "SetRendererParamCmd(id=" << command.renderer_id << " ";
switch (command.param.Which()) {
case RendererParam::Tag::kShadowTechnique:
stream << "shadow_technique=";
switch (command.param.shadow_technique()) {
case ShadowTechnique::UNSHADOWED:
stream << "Unshadowed";
break;
case ShadowTechnique::SCREEN_SPACE:
stream << "ScreenSpace";
break;
case ShadowTechnique::SHADOW_MAP:
stream << "ShadowMap";
break;
case ShadowTechnique::MOMENT_SHADOW_MAP:
stream << "MomentShadowMap";
break;
case ShadowTechnique::STENCIL_SHADOW_VOLUME:
stream << "StencilShadowVolume";
break;
}
break;
case RendererParam::Tag::kRenderFrequency:
stream << "render_frequency=";
switch (command.param.render_frequency()) {
case fuchsia::ui::gfx::RenderFrequency::WHEN_REQUESTED:
stream << "WhenRequested";
break;
case fuchsia::ui::gfx::RenderFrequency::CONTINUOUSLY:
stream << "Continuous";
break;
}
case RendererParam::Tag::Invalid:
stream << "Invalid";
break;
}
return stream << ")";
}
std::ostream& operator<<(std::ostream& stream,
const fuchsia::ui::gfx::SetTextureCmd& command) {
stream << "SetTextureCmd(id:" << command.material_id
<< " texture: " << command.texture_id;
return stream << ")";
}
std::ostream& operator<<(std::ostream& stream,
const fuchsia::ui::gfx::SetColorCmd& command) {
stream << "SetColorCmd(id:" << command.material_id;
return stream << ")";
}
std::ostream& operator<<(std::ostream& stream,
const fuchsia::ui::gfx::Value::Tag& tag) {
switch (tag) {
case Value::Tag::kVector1:
return stream << "vec1";
case Value::Tag::kVector2:
return stream << "vec2";
case Value::Tag::kVector3:
return stream << "vec3";
case Value::Tag::kVector4:
return stream << "vec4";
case Value::Tag::kMatrix4x4:
return stream << "mat4";
case Value::Tag::kColorRgb:
return stream << "rgb";
case Value::Tag::kColorRgba:
return stream << "rgba";
case Value::Tag::kDegrees:
return stream << "degrees";
case Value::Tag::kQuaternion:
return stream << "quat";
case Value::Tag::kTransform:
return stream << "transform";
case Value::Tag::kVariableId:
return stream << "variable";
case Value::Tag::Invalid:
return stream << "Invalid";
}
}