Skip to content

Commit

Permalink
Add automatic generated files and enable text rendering in USDView (P…
Browse files Browse the repository at this point in the history
…ixarAnimationStudios#76)

UsdView still show nothing for text, because the implementation is not ready.

(cherry picked from commit 5b8b03705b63a8cad9503516d2cbf8b1a8c9a64a)
  • Loading branch information
PierreWang committed Jan 17, 2023
1 parent c8c606e commit 754b450
Show file tree
Hide file tree
Showing 15 changed files with 1,418 additions and 181 deletions.
23 changes: 23 additions & 0 deletions extras/usd/examples/usdGeomExamples/simpleText.usda
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#usda 1.0

(
upAxis = "Y"
doc = """This layer represents the various geometric forms that curves
may be used to represent."""
)


def Xform "Text1" {
uniform token[] xformOpOrder = ["xformOp:translate"]
float3 xformOp:translate = (0, 9, 0)
def Scope "Text11"{
def SimpleText "TextA" (){
uniform token[] xformOpOrder = ["xformOp:translate"]
float3 xformOp:translate = (3, 0, 0)

string typeface = "Arial"
int textHeight = 22
string textData = "Fox"
}
}
}
114 changes: 114 additions & 0 deletions pxr/usd/usdGeom/decoratedSimpleText.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
//
// Copyright 2016 Pixar
//
// Licensed under the Apache License, Version 2.0 (the "Apache License")
// with the following modification; you may not use this file except in
// compliance with the Apache License and the following modification to it:
// Section 6. Trademarks. is deleted and replaced with:
//
// 6. Trademarks. This License does not grant permission to use the trade
// names, trademarks, service marks, or product names of the Licensor
// and its affiliates, except as required to comply with Section 4(c) of
// the License and to reproduce the content of the NOTICE file.
//
// You may obtain a copy of the Apache License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the Apache License with the above modification is
// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the Apache License for the specific
// language governing permissions and limitations under the Apache License.
//
#include "pxr/usd/usdGeom/decoratedSimpleText.h"
#include "pxr/usd/usd/schemaRegistry.h"
#include "pxr/usd/usd/typed.h"

#include "pxr/usd/sdf/types.h"
#include "pxr/usd/sdf/assetPath.h"

PXR_NAMESPACE_OPEN_SCOPE

// Register the schema with the TfType system.
TF_REGISTRY_FUNCTION(TfType)
{
TfType::Define<UsdGeomDecoratedSimpleText,
TfType::Bases< UsdGeomSimpleText > >();

}

/* virtual */
UsdGeomDecoratedSimpleText::~UsdGeomDecoratedSimpleText()
{
}

/* static */
UsdGeomDecoratedSimpleText
UsdGeomDecoratedSimpleText::Get(const UsdStagePtr &stage, const SdfPath &path)
{
if (!stage) {
TF_CODING_ERROR("Invalid stage");
return UsdGeomDecoratedSimpleText();
}
return UsdGeomDecoratedSimpleText(stage->GetPrimAtPath(path));
}


/* virtual */
UsdSchemaKind UsdGeomDecoratedSimpleText::_GetSchemaKind() const {
return UsdGeomDecoratedSimpleText::schemaKind;
}

/* virtual */
UsdSchemaKind UsdGeomDecoratedSimpleText::_GetSchemaType() const {
return UsdGeomDecoratedSimpleText::schemaType;
}

/* static */
const TfType &
UsdGeomDecoratedSimpleText::_GetStaticTfType()
{
static TfType tfType = TfType::Find<UsdGeomDecoratedSimpleText>();
return tfType;
}

/* static */
bool
UsdGeomDecoratedSimpleText::_IsTypedSchema()
{
static bool isTyped = _GetStaticTfType().IsA<UsdTyped>();
return isTyped;
}

/* virtual */
const TfType &
UsdGeomDecoratedSimpleText::_GetTfType() const
{
return _GetStaticTfType();
}

/*static*/
const TfTokenVector&
UsdGeomDecoratedSimpleText::GetSchemaAttributeNames(bool includeInherited)
{
static TfTokenVector localNames;
static TfTokenVector allNames =
UsdGeomSimpleText::GetSchemaAttributeNames(true);

if (includeInherited)
return allNames;
else
return localNames;
}

PXR_NAMESPACE_CLOSE_SCOPE

// ===================================================================== //
// Feel free to add custom code below this line. It will be preserved by
// the code generator.
//
// Just remember to wrap code in the appropriate delimiters:
// 'PXR_NAMESPACE_OPEN_SCOPE', 'PXR_NAMESPACE_CLOSE_SCOPE'.
// ===================================================================== //
// --(BEGIN CUSTOM CODE)--
151 changes: 151 additions & 0 deletions pxr/usd/usdGeom/decoratedSimpleText.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
//
// Copyright 2016 Pixar
//
// Licensed under the Apache License, Version 2.0 (the "Apache License")
// with the following modification; you may not use this file except in
// compliance with the Apache License and the following modification to it:
// Section 6. Trademarks. is deleted and replaced with:
//
// 6. Trademarks. This License does not grant permission to use the trade
// names, trademarks, service marks, or product names of the Licensor
// and its affiliates, except as required to comply with Section 4(c) of
// the License and to reproduce the content of the NOTICE file.
//
// You may obtain a copy of the Apache License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the Apache License with the above modification is
// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the Apache License for the specific
// language governing permissions and limitations under the Apache License.
//
#ifndef USDGEOM_GENERATED_DECORATEDSIMPLETEXT_H
#define USDGEOM_GENERATED_DECORATEDSIMPLETEXT_H

/// \file usdGeom/decoratedSimpleText.h

#include "pxr/pxr.h"
#include "pxr/usd/usdGeom/api.h"
#include "pxr/usd/usdGeom/simpleText.h"
#include "pxr/usd/usd/prim.h"
#include "pxr/usd/usd/stage.h"

#include "pxr/base/vt/value.h"

#include "pxr/base/gf/vec3d.h"
#include "pxr/base/gf/vec3f.h"
#include "pxr/base/gf/matrix4d.h"

#include "pxr/base/tf/token.h"
#include "pxr/base/tf/type.h"

PXR_NAMESPACE_OPEN_SCOPE

class SdfAssetPath;

// -------------------------------------------------------------------------- //
// DECORATEDSIMPLETEXT //
// -------------------------------------------------------------------------- //

/// \class UsdGeomDecoratedSimpleText
///
/// Class for decorated single line single style text.
///
class UsdGeomDecoratedSimpleText : public UsdGeomSimpleText
{
public:
/// Compile time constant representing what kind of schema this class is.
///
/// \sa UsdSchemaKind
static const UsdSchemaKind schemaKind = UsdSchemaKind::AbstractTyped;

/// \deprecated
/// Same as schemaKind, provided to maintain temporary backward
/// compatibility with older generated schemas.
static const UsdSchemaKind schemaType = UsdSchemaKind::AbstractTyped;

/// Construct a UsdGeomDecoratedSimpleText on UsdPrim \p prim .
/// Equivalent to UsdGeomDecoratedSimpleText::Get(prim.GetStage(), prim.GetPath())
/// for a \em valid \p prim, but will not immediately throw an error for
/// an invalid \p prim
explicit UsdGeomDecoratedSimpleText(const UsdPrim& prim=UsdPrim())
: UsdGeomSimpleText(prim)
{
}

/// Construct a UsdGeomDecoratedSimpleText on the prim held by \p schemaObj .
/// Should be preferred over UsdGeomDecoratedSimpleText(schemaObj.GetPrim()),
/// as it preserves SchemaBase state.
explicit UsdGeomDecoratedSimpleText(const UsdSchemaBase& schemaObj)
: UsdGeomSimpleText(schemaObj)
{
}

/// Destructor.
USDGEOM_API
virtual ~UsdGeomDecoratedSimpleText();

/// Return a vector of names of all pre-declared attributes for this schema
/// class and all its ancestor classes. Does not include attributes that
/// may be authored by custom/extended methods of the schemas involved.
USDGEOM_API
static const TfTokenVector &
GetSchemaAttributeNames(bool includeInherited=true);

/// Return a UsdGeomDecoratedSimpleText holding the prim adhering to this
/// schema at \p path on \p stage. If no prim exists at \p path on
/// \p stage, or if the prim at that path does not adhere to this schema,
/// return an invalid schema object. This is shorthand for the following:
///
/// \code
/// UsdGeomDecoratedSimpleText(stage->GetPrimAtPath(path));
/// \endcode
///
USDGEOM_API
static UsdGeomDecoratedSimpleText
Get(const UsdStagePtr &stage, const SdfPath &path);


protected:
/// Returns the kind of schema this class belongs to.
///
/// \sa UsdSchemaKind
USDGEOM_API
UsdSchemaKind _GetSchemaKind() const override;

/// \deprecated
/// Same as _GetSchemaKind, provided to maintain temporary backward
/// compatibility with older generated schemas.
USDGEOM_API
UsdSchemaKind _GetSchemaType() const override;

private:
// needs to invoke _GetStaticTfType.
friend class UsdSchemaRegistry;
USDGEOM_API
static const TfType &_GetStaticTfType();

static bool _IsTypedSchema();

// override SchemaBase virtuals.
USDGEOM_API
const TfType &_GetTfType() const override;

public:
// ===================================================================== //
// Feel free to add custom code below this line, it will be preserved by
// the code generator.
//
// Just remember to:
// - Close the class declaration with };
// - Close the namespace with PXR_NAMESPACE_CLOSE_SCOPE
// - Close the include guard with #endif
// ===================================================================== //
// --(BEGIN CUSTOM CODE)--
};

PXR_NAMESPACE_CLOSE_SCOPE

#endif
Loading

0 comments on commit 754b450

Please sign in to comment.