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  bool _CanReadFromAsset(
91  const std::string& resolvedPath,
92  const std::shared_ptr<ArAsset>& asset) const;
93 
94  bool _ReadFromAsset(
95  SdfLayer* layer,
96  const std::string& resolvedPath,
97  const std::shared_ptr<ArAsset>& asset,
98  bool metadataOnly) const;
99 
100  template <class ...Args>
101  bool _ReadHelper(
102  SdfLayer* layer,
103  const std::string& resolvedPath,
104  bool metadataOnly,
105  Args&&... args) const;
106 
107 };
108 
109 PXR_NAMESPACE_CLOSE_SCOPE
110 
111 #endif // PXR_USD_USD_USDC_FILE_FORMAT_H
A unit of scene description that you combine with other units of scene description to form a shot,...
Definition: layer.h:96
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_v2.h:47
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.