Differential D9642 Diff 31360 extern/draco/draco/src/draco/compression/mesh/mesh_edgebreaker_decoder.cc
Changeset View
Changeset View
Standalone View
Standalone View
extern/draco/draco/src/draco/compression/mesh/mesh_edgebreaker_decoder.cc
- This file was moved from extern/draco/dracoenc/src/draco/compression/mesh/mesh_edgebreaker_decoder.cc.
| // Copyright 2016 The Draco Authors. | // Copyright 2016 The Draco Authors. | ||||
| // | // | ||||
| // Licensed under the Apache License, Version 2.0 (the "License"); | // Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| // you may not use this file except in compliance with the License. | // you may not use this file except in compliance with the License. | ||||
| // You may obtain a copy of the License at | // You may obtain a copy of the License at | ||||
| // | // | ||||
| // http://www.apache.org/licenses/LICENSE-2.0 | // http://www.apache.org/licenses/LICENSE-2.0 | ||||
| // | // | ||||
| // Unless required by applicable law or agreed to in writing, software | // Unless required by applicable law or agreed to in writing, software | ||||
| // distributed under the License is distributed on an "AS IS" BASIS, | // distributed under the License is distributed on an "AS IS" BASIS, | ||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| // See the License for the specific language governing permissions and | // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | // limitations under the License. | ||||
| // | // | ||||
| #include "draco/compression/mesh/mesh_edgebreaker_decoder.h" | #include "draco/compression/mesh/mesh_edgebreaker_decoder.h" | ||||
| #include "draco/compression/mesh/mesh_edgebreaker_decoder_impl.h" | #include "draco/compression/mesh/mesh_edgebreaker_decoder_impl.h" | ||||
| #include "draco/compression/mesh/mesh_edgebreaker_traversal_predictive_decoder.h" | #include "draco/compression/mesh/mesh_edgebreaker_traversal_predictive_decoder.h" | ||||
| #include "draco/compression/mesh/mesh_edgebreaker_traversal_valence_decoder.h" | #include "draco/compression/mesh/mesh_edgebreaker_traversal_valence_decoder.h" | ||||
| namespace draco { | namespace draco { | ||||
| MeshEdgebreakerDecoder::MeshEdgebreakerDecoder() {} | MeshEdgebreakerDecoder::MeshEdgebreakerDecoder() {} | ||||
| bool MeshEdgebreakerDecoder::CreateAttributesDecoder(int32_t att_decoder_id) { | bool MeshEdgebreakerDecoder::CreateAttributesDecoder(int32_t att_decoder_id) { | ||||
| return impl_->CreateAttributesDecoder(att_decoder_id); | return impl_->CreateAttributesDecoder(att_decoder_id); | ||||
| } | } | ||||
| bool MeshEdgebreakerDecoder::InitializeDecoder() { | bool MeshEdgebreakerDecoder::InitializeDecoder() { | ||||
| uint8_t traversal_decoder_type; | uint8_t traversal_decoder_type; | ||||
| if (!buffer()->Decode(&traversal_decoder_type)) | if (!buffer()->Decode(&traversal_decoder_type)) { | ||||
| return false; | return false; | ||||
| } | |||||
| impl_ = nullptr; | impl_ = nullptr; | ||||
| if (traversal_decoder_type == MESH_EDGEBREAKER_STANDARD_ENCODING) { | if (traversal_decoder_type == MESH_EDGEBREAKER_STANDARD_ENCODING) { | ||||
| #ifdef DRACO_STANDARD_EDGEBREAKER_SUPPORTED | #ifdef DRACO_STANDARD_EDGEBREAKER_SUPPORTED | ||||
| impl_ = std::unique_ptr<MeshEdgebreakerDecoderImplInterface>( | impl_ = std::unique_ptr<MeshEdgebreakerDecoderImplInterface>( | ||||
| new MeshEdgebreakerDecoderImpl<MeshEdgebreakerTraversalDecoder>()); | new MeshEdgebreakerDecoderImpl<MeshEdgebreakerTraversalDecoder>()); | ||||
| #endif | #endif | ||||
| } else if (traversal_decoder_type == MESH_EDGEBREAKER_PREDICTIVE_ENCODING) { | } else if (traversal_decoder_type == MESH_EDGEBREAKER_PREDICTIVE_ENCODING) { | ||||
| #ifdef DRACO_BACKWARDS_COMPATIBILITY_SUPPORTED | #ifdef DRACO_BACKWARDS_COMPATIBILITY_SUPPORTED | ||||
| #ifdef DRACO_PREDICTIVE_EDGEBREAKER_SUPPORTED | #ifdef DRACO_PREDICTIVE_EDGEBREAKER_SUPPORTED | ||||
| impl_ = std::unique_ptr<MeshEdgebreakerDecoderImplInterface>( | impl_ = std::unique_ptr<MeshEdgebreakerDecoderImplInterface>( | ||||
| new MeshEdgebreakerDecoderImpl< | new MeshEdgebreakerDecoderImpl< | ||||
| MeshEdgebreakerTraversalPredictiveDecoder>()); | MeshEdgebreakerTraversalPredictiveDecoder>()); | ||||
| #endif | #endif | ||||
| #endif | #endif | ||||
| } else if (traversal_decoder_type == MESH_EDGEBREAKER_VALENCE_ENCODING) { | } else if (traversal_decoder_type == MESH_EDGEBREAKER_VALENCE_ENCODING) { | ||||
| impl_ = std::unique_ptr<MeshEdgebreakerDecoderImplInterface>( | impl_ = std::unique_ptr<MeshEdgebreakerDecoderImplInterface>( | ||||
| new MeshEdgebreakerDecoderImpl< | new MeshEdgebreakerDecoderImpl< | ||||
| MeshEdgebreakerTraversalValenceDecoder>()); | MeshEdgebreakerTraversalValenceDecoder>()); | ||||
| } | } | ||||
| if (!impl_) { | if (!impl_) { | ||||
| return false; | return false; | ||||
| } | } | ||||
| if (!impl_->Init(this)) | if (!impl_->Init(this)) { | ||||
| return false; | return false; | ||||
| } | |||||
| return true; | return true; | ||||
| } | } | ||||
| bool MeshEdgebreakerDecoder::DecodeConnectivity() { | bool MeshEdgebreakerDecoder::DecodeConnectivity() { | ||||
| return impl_->DecodeConnectivity(); | return impl_->DecodeConnectivity(); | ||||
| } | } | ||||
| bool MeshEdgebreakerDecoder::OnAttributesDecoded() { | bool MeshEdgebreakerDecoder::OnAttributesDecoded() { | ||||
| return impl_->OnAttributesDecoded(); | return impl_->OnAttributesDecoded(); | ||||
| } | } | ||||
| } // namespace draco | } // namespace draco | ||||