1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 
5 macro_rules! common {
6     () => (
7         use ::intern;
8         #[allow(unused_imports)]
9         use ::prim_store::PrimitiveSceneData;
10         #[cfg_attr(feature = "capture", derive(Serialize))]
11         #[cfg_attr(feature = "replay", derive(Deserialize))]
12         #[derive(Clone, Copy, Debug, Eq, Hash, MallocSizeOf, PartialEq)]
13         pub struct Marker;
14         pub type Handle = intern::Handle<Marker>;
15     )
16 }
17 
18 pub mod clip {
19 common!();
20 use ::clip::{ClipItemKey, ClipNode};
21 pub type Store = intern::DataStore<ClipItemKey, ClipNode, Marker>;
22 pub type UpdateList = intern::UpdateList<ClipItemKey>;
23 pub type Interner = intern::Interner<ClipItemKey, (), Marker>;
24 }
25 
26 pub mod prim {
27 common!();
28 use ::prim_store::{PrimitiveKey, PrimitiveTemplate};
29 pub type Store = intern::DataStore<PrimitiveKey, PrimitiveTemplate, Marker>;
30 pub type UpdateList = intern::UpdateList<PrimitiveKey>;
31 pub type Interner = intern::Interner<PrimitiveKey, PrimitiveSceneData, Marker>;
32 }
33 
34 pub mod normal_border {
35 common!();
36 use ::prim_store::borders::{NormalBorderKey, NormalBorderTemplate};
37 pub type Store = intern::DataStore<NormalBorderKey, NormalBorderTemplate, Marker>;
38 pub type UpdateList = intern::UpdateList<NormalBorderKey>;
39 pub type Interner = intern::Interner<NormalBorderKey, PrimitiveSceneData, Marker>;
40 }
41 
42 pub mod image_border {
43 common!();
44 use ::prim_store::borders::{ImageBorderKey, ImageBorderTemplate};
45 pub type Store = intern::DataStore<ImageBorderKey, ImageBorderTemplate, Marker>;
46 pub type UpdateList = intern::UpdateList<ImageBorderKey>;
47 pub type Interner = intern::Interner<ImageBorderKey, PrimitiveSceneData, Marker>;
48 }
49 
50 pub mod image {
51 common!();
52 use ::prim_store::image::{ImageKey, ImageTemplate};
53 pub type Store = intern::DataStore<ImageKey, ImageTemplate, Marker>;
54 pub type UpdateList = intern::UpdateList<ImageKey>;
55 pub type Interner = intern::Interner<ImageKey, PrimitiveSceneData, Marker>;
56 }
57 
58 pub mod yuv_image {
59 common!();
60 use ::prim_store::image::{YuvImageKey, YuvImageTemplate};
61 pub type Store = intern::DataStore<YuvImageKey, YuvImageTemplate, Marker>;
62 pub type UpdateList = intern::UpdateList<YuvImageKey>;
63 pub type Interner = intern::Interner<YuvImageKey, PrimitiveSceneData, Marker>;
64 }
65 
66 pub mod line_decoration {
67 use ::prim_store::line_dec::{LineDecorationKey, LineDecorationTemplate};
68 common!();
69 pub type Store = intern::DataStore<LineDecorationKey, LineDecorationTemplate, Marker>;
70 pub type UpdateList = intern::UpdateList<LineDecorationKey>;
71 pub type Interner = intern::Interner<LineDecorationKey, PrimitiveSceneData, Marker>;
72 }
73 
74 pub mod linear_grad {
75 common!();
76 use ::prim_store::gradient::{LinearGradientKey, LinearGradientTemplate};
77 pub type Store = intern::DataStore<LinearGradientKey, LinearGradientTemplate, Marker>;
78 pub type UpdateList = intern::UpdateList<LinearGradientKey>;
79 pub type Interner = intern::Interner<LinearGradientKey, PrimitiveSceneData, Marker>;
80 }
81 
82 pub mod radial_grad {
83 common!();
84 use ::prim_store::gradient::{RadialGradientKey, RadialGradientTemplate};
85 pub type Store = intern::DataStore<RadialGradientKey, RadialGradientTemplate, Marker>;
86 pub type UpdateList = intern::UpdateList<RadialGradientKey>;
87 pub type Interner = intern::Interner<RadialGradientKey, PrimitiveSceneData, Marker>;
88 }
89 
90 pub mod picture {
91 common!();
92 use ::prim_store::picture::{PictureKey, PictureTemplate};
93 pub type Store = intern::DataStore<PictureKey, PictureTemplate, Marker>;
94 pub type UpdateList = intern::UpdateList<PictureKey>;
95 pub type Interner = intern::Interner<PictureKey, PrimitiveSceneData, Marker>;
96 }
97 
98 pub mod text_run {
99 common!();
100 use ::prim_store::text_run::{TextRunKey, TextRunTemplate};
101 pub type Store = intern::DataStore<TextRunKey, TextRunTemplate, Marker>;
102 pub type UpdateList = intern::UpdateList<TextRunKey>;
103 pub type Interner = intern::Interner<TextRunKey, PrimitiveSceneData, Marker>;
104 }
105 
106 
107 
108