calibration_tools_v1.0/lidar_driver/include/open3d/visualization/gui/ImageWidget.h

70 lines
2.8 KiB
C
Raw Normal View History

2025-02-20 10:45:17 +08:00
// ----------------------------------------------------------------------------
// - Open3D: www.open3d.org -
// ----------------------------------------------------------------------------
// Copyright (c) 2018-2023 www.open3d.org
// SPDX-License-Identifier: MIT
// ----------------------------------------------------------------------------
#pragma once
#include "open3d/visualization/gui/Widget.h"
#include "open3d/visualization/gui/UIImage.h"
namespace open3d {
namespace visualization {
namespace gui {
class ImageWidget : public Widget {
using Super = Widget;
public:
ImageWidget();
/// Uses image from the specified path. Each ImageWidget will use one
/// draw call.
explicit ImageWidget(const char* image_path);
/// Uses existing image. Each ImageWidget will use one draw call.
explicit ImageWidget(std::shared_ptr<geometry::Image> image);
/// Uses existing image. Each ImageWidget will use one draw call.
explicit ImageWidget(std::shared_ptr<t::geometry::Image> image);
/// Uses an existing texture, using texture coordinates
/// (u0, v0) to (u1, v1). Does not deallocate texture on destruction.
/// This is useful for using an icon atlas to reduce draw calls.
explicit ImageWidget(visualization::rendering::TextureHandle texture_id,
float u0 = 0.0f,
float v0 = 0.0f,
float u1 = 1.0f,
float v1 = 1.0f);
ImageWidget(std::shared_ptr<UIImage> image);
~ImageWidget();
/// Mostly a convenience function for GetUIImage()->UpdateImage().
/// If 'image' is the same size as the current image, will update the
/// texture with the contents of 'image'. This is the fastest path for
/// setting an image, and is recommended if you are displaying video.
/// If 'image' is a different size, it will allocate a new texture,
/// which is essentially the same as creating a new UIImage and calling
/// SetUIImage(). This is the slow path, and may eventually exhaust internal
/// texture resources.
void UpdateImage(std::shared_ptr<geometry::Image> image);
void UpdateImage(std::shared_ptr<t::geometry::Image> image);
std::shared_ptr<UIImage> GetUIImage() const;
void SetUIImage(std::shared_ptr<UIImage> image);
Size CalcPreferredSize(const LayoutContext& context,
const Constraints& constraints) const override;
void Layout(const LayoutContext& context) override;
DrawResult Draw(const DrawContext& context) override;
private:
struct Impl;
std::unique_ptr<Impl> impl_;
};
} // namespace gui
} // namespace visualization
} // namespace open3d