1142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi// Copyright 2014 Google Inc. All Rights Reserved.
2142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi//
3142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi// Licensed under the Apache License, Version 2.0 (the "License");
4142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi// you may not use this file except in compliance with the License.
5142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi// You may obtain a copy of the License at
6142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi//
7142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi// http://www.apache.org/licenses/LICENSE-2.0
8142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi//
9142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi// Unless required by applicable law or agreed to in writing, software
10142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi// distributed under the License is distributed on an "AS IS" BASIS,
11142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi// See the License for the specific language governing permissions and
13142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi// limitations under the License.
14142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi//
15142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi// Common definition for WOFF2 encoding/decoding
16142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi
17142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi#ifndef WOFF2_WOFF2_COMMON_H_
18142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi#define WOFF2_WOFF2_COMMON_H_
19142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi
20142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi#include <inttypes.h>
21142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi
22142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashinamespace woff2 {
23142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi
24142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashistatic const uint32_t kWoff2Signature = 0x774f4632;  // "wOF2"
25142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi
26142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashiconst unsigned int kWoff2FlagsContinueStream = 1 << 4;
27142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashiconst unsigned int kWoff2FlagsTransform = 1 << 5;
28142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi
29142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashistruct Point {
30142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi  int x;
31142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi  int y;
32142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi  bool on_curve;
33142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi};
34142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi
35142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashistruct Table {
36142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi  uint32_t tag;
37142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi  uint32_t flags;
38142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi  uint32_t src_offset;
39142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi  uint32_t src_length;
40142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi
41142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi  uint32_t transform_length;
42142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi
43142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi  uint32_t dst_offset;
44142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi  uint32_t dst_length;
45142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi  const uint8_t* dst_data;
46142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi};
47142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi
48142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi} // namespace woff2
49142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi
50142d8881c174896c0180d60d3efe66a07daa7256Kenichi Ishibashi#endif  // WOFF2_WOFF2_COMMON_H_
51