usdcFileFormat.h
1 //
2 // Copyright 2016 Pixar
3 //
4 // Licensed under the Apache License, Version 2.0 (the "Apache License")
5 // with the following modification; you may not use this file except in
6 // compliance with the Apache License and the following modification to it:
7 // Section 6. Trademarks. is deleted and replaced with:
8 //
9 // 6. Trademarks. This License does not grant permission to use the trade
10 // names, trademarks, service marks, or product names of the Licensor
11 // and its affiliates, except as required to comply with Section 4(c) of
12 // the License and to reproduce the content of the NOTICE file.
13 //
14 // You may obtain a copy of the Apache License at
15 //
16 // http://www.apache.org/licenses/LICENSE-2.0
17 //
18 // Unless required by applicable law or agreed to in writing, software
19 // distributed under the Apache License with the above modification is
20 // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21 // KIND, either express or implied. See the Apache License for the specific
22 // language governing permissions and limitations under the Apache License.
23 //
24 #ifndef PXR_USD_USD_USDC_FILE_FORMAT_H
25 #define PXR_USD_USD_USDC_FILE_FORMAT_H
26 
27 #include "pxr/pxr.h"
28 #include "pxr/usd/usd/api.h"
29 #include "pxr/usd/sdf/fileFormat.h"
31 #include <string>
32 
33 PXR_NAMESPACE_OPEN_SCOPE
34 
35 #define USD_USDC_FILE_FORMAT_TOKENS \
36  ((Id, "usdc"))
37 
38 TF_DECLARE_PUBLIC_TOKENS(UsdUsdcFileFormatTokens, USD_API, USD_USDC_FILE_FORMAT_TOKENS);
39 
41 
42 class ArAsset;
43 
49 {
50 public:
52  using string = std::string;
53 
54  virtual SdfAbstractDataRefPtr InitData(
55  const FileFormatArguments& args) const override;
56 
57  virtual bool CanRead(const string &file) const override;
58 
59  virtual bool Read(
60  SdfLayer* layer,
61  const string& resolvedPath,
62  bool metadataOnly) const override;
63 
64  virtual bool WriteToFile(
65  const SdfLayer& layer,
66  const string& filePath,
67  const string& comment = string(),
68  const FileFormatArguments& args = FileFormatArguments()) const override;
69 
70  virtual bool ReadFromString(SdfLayer* layer,
71  const string& str) const override;
72 
73  virtual bool WriteToString(const SdfLayer& layer,
74  string* str,
75  const string& comment = string()) const override;
76 
77  virtual bool WriteToStream(const SdfSpecHandle &spec,
78  std::ostream& out,
79  size_t indent) const override;
80 
81 protected:
82  SDF_FILE_FORMAT_FACTORY_ACCESS;
83 
85  virtual ~UsdUsdcFileFormat();
86 
87 private:
88  friend class UsdUsdFileFormat;
89 
90  SdfAbstractDataRefPtr _InitDetachedData(
91  const FileFormatArguments& args) const override;
92 
93  bool _ReadDetached(
94  SdfLayer* layer,
95  const std::string& resolvedPath,
96  bool metadataOnly) const override;
97 
98  bool _CanReadFromAsset(
99  const std::string& resolvedPath,
100  const std::shared_ptr<ArAsset>& asset) const;
101 
102  bool _ReadFromAsset(
103  SdfLayer* layer,
104  const std::string& resolvedPath,
105  const std::shared_ptr<ArAsset>& asset,
106  bool metadataOnly,
107  bool detached) const;
108 
109  template <class ...Args>
110  bool _ReadHelper(
111  SdfLayer* layer,
112  const std::string& resolvedPath,
113  bool metadataOnly,
114  Args&&... args) const;
115 
116 };
117 
118 PXR_NAMESPACE_CLOSE_SCOPE
119 
120 #endif // PXR_USD_USD_USDC_FILE_FORMAT_H
SdfAbstractDataRefPtr _InitDetachedData(const FileFormatArguments &args) const override
A scene description container that can combine with other such containers to form simple component as...
Definition: layer.h:94
virtual bool WriteToStream(const SdfSpecHandle &spec, std::ostream &out, size_t indent) const override
Write the provided spec to out indented indent levels.
Interface for accessing the contents of an asset.
Definition: asset.h:44
virtual bool ReadFromString(SdfLayer *layer, const string &str) const override
Reads data in the string str into the layer layer.
virtual SdfAbstractDataRefPtr InitData(const FileFormatArguments &args) const override
This method allows the file format to bind to whatever data container is appropriate.
#define TF_DECLARE_WEAK_AND_REF_PTRS(type)
Define standard weak, ref, and vector pointer types.
Definition: declarePtrs.h:89
File format for binary Usd files.
#define TF_DECLARE_PUBLIC_TOKENS(...)
Macro to define public tokens.
Definition: staticTokens.h:118
File format for USD files.
Definition: usdFileFormat.h:59
std::map< std::string, std::string > FileFormatArguments
Type for specifying additional file format-specific arguments to the various API below.
Definition: fileFormat.h:119
virtual bool Read(SdfLayer *layer, const string &resolvedPath, bool metadataOnly) const override
Reads scene description from the asset specified by resolvedPath into the layer layer.
This file defines some macros that are useful for declaring and using static TfTokens.
virtual bool WriteToFile(const SdfLayer &layer, const string &filePath, const string &comment=string(), const FileFormatArguments &args=FileFormatArguments()) const override
Writes the content in layer into the file at filePath.
Base class for file format implementations.
Definition: fileFormat.h:64
virtual bool WriteToString(const SdfLayer &layer, string *str, const string &comment=string()) const override
Writes the content in layer to the string str.
virtual bool CanRead(const string &file) const override
Returns true if file can be read by this format.
bool _ReadDetached(SdfLayer *layer, const std::string &resolvedPath, bool metadataOnly) const override