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