Skip to content

File geometry_atlas.h

File List > geometry > geometry_atlas.h

Go to the documentation of this file

#pragma once
#include <uipc/geometry/geometry.h>
#include <uipc/geometry/geometry_slot.h>
#include <uipc/geometry/geometry_collection.h>

namespace uipc::geometry
{
class UIPC_CORE_API GeometryAtlas
{
    class Impl;

  public:
    GeometryAtlas();
    ~GeometryAtlas();

    IndexT create(const Geometry& geo, bool evolving_only = false);

    S<const GeometrySlot> find(IndexT id) const;

    SizeT geometry_count() const noexcept;

    void create(std::string_view name, const AttributeCollection& ac, bool evolving_only = false);

    S<const AttributeCollection> find(std::string_view name) const;

    SizeT attribute_collection_count() const noexcept;

    vector<std::string> attribute_collection_names() const noexcept;

    Json to_json() const;

    void from_json(const Json& j);

  private:
    U<Impl> m_impl;
};

class UIPC_CORE_API GeometryAtlasCommit
{
    class Impl;

  public:
    GeometryAtlasCommit();
    ~GeometryAtlasCommit();

    IndexT                  create(const GeometryCommit& geo_commit);
    S<const GeometryCommit> find(IndexT id) const;
    void create(std::string_view name, const AttributeCollectionCommit& ac_commit);
    S<const AttributeCollectionCommit> find(std::string_view name) const;
    vector<std::string> attribute_collection_names() const noexcept;
    SizeT               attribute_collection_count() const noexcept;
    SizeT               geometry_count() const noexcept;

    Json to_json() const;

    void from_json(const Json& j);


    U<Impl> m_impl;
};
}  // namespace uipc::geometry