//============================================================================ // Copyright (c) Kitware, Inc. // All rights reserved. // See LICENSE.txt for details. // This software is distributed WITHOUT ANY WARRANTY; without even // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // PURPOSE. See the above copyright notice for more information. // // Copyright 2016 Sandia Corporation. // Copyright 2016 UT-Battelle, LLC. // Copyright 2016 Los Alamos National Security. // // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, // the U.S. Government retains certain rights in this software. // // Under the terms of Contract DE-AC52-06NA25396 with Los Alamos National // Laboratory (LANL), the U.S. Government retains certain rights in // this software. //============================================================================ #include namespace vtkm { namespace rendering { TextAnnotation::TextAnnotation(const std::string &text, const vtkm::rendering::Color &color, vtkm::Float32 scale) : Text(text), TextColor(color), Scale(scale), Anchor(-1,-1) { } TextAnnotation::~TextAnnotation() { } void TextAnnotation::SetText(const std::string &text) { this->Text = text; } const std::string &TextAnnotation::GetText() const { return this->Text; } void TextAnnotation::SetRawAnchor(const vtkm::Vec &anchor) { this->Anchor = anchor; } void TextAnnotation::SetRawAnchor(vtkm::Float32 h, vtkm::Float32 v) { this->SetRawAnchor(vtkm::make_Vec(h,v)); } void TextAnnotation::SetAlignment(HorizontalAlignment h, VerticalAlignment v) { switch (h) { case Left: this->Anchor[0] = -1.0f; break; case HCenter: this->Anchor[0] = 0.0f; break; case Right: this->Anchor[0] = +1.0f; break; } // For vertical alignment, "center" is generally the center // of only the above-baseline contents of the font, so we // use a value slightly off of zero for VCenter. // (We don't use an offset value instead of -1.0 for the // bottom value, because generally we want a true minimum // extent, e.g. to have text sitting at the bottom of a // window, and in that case, we need to keep all the text, // including parts that descend below the baseline, above // the bottom of the window. switch (v) { case Bottom: this->Anchor[1] = -1.0f; break; case VCenter: this->Anchor[1] = -0.06f; break; case Top: this->Anchor[1] = +1.0f; break; } } void TextAnnotation::SetScale(vtkm::Float32 scale) { this->Scale = scale; } } } // namespace vtkm::rendering