@@ -974,7 +974,7 @@ dependencies = [
"collections",
"editor",
"gpui",
- "itertools",
+ "itertools 0.10.5",
"language",
"outline",
"project",
@@ -1924,7 +1924,7 @@ dependencies = [
"cranelift-codegen",
"cranelift-entity",
"cranelift-frontend",
- "itertools",
+ "itertools 0.10.5",
"log",
"smallvec",
"wasmparser",
@@ -2345,7 +2345,7 @@ dependencies = [
"git",
"gpui",
"indoc",
- "itertools",
+ "itertools 0.10.5",
"language",
"lazy_static",
"log",
@@ -3135,7 +3135,7 @@ dependencies = [
"futures 0.3.28",
"gpui_macros",
"image",
- "itertools",
+ "itertools 0.10.5",
"lazy_static",
"log",
"media",
@@ -3749,6 +3749,15 @@ dependencies = [
"either",
]
+[[package]]
+name = "itertools"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
+dependencies = [
+ "either",
+]
+
[[package]]
name = "itoa"
version = "1.0.9"
@@ -5478,7 +5487,7 @@ dependencies = [
"globset",
"gpui",
"ignore",
- "itertools",
+ "itertools 0.10.5",
"language",
"lazy_static",
"log",
@@ -5602,7 +5611,7 @@ checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5"
dependencies = [
"bytes 1.4.0",
"heck 0.3.3",
- "itertools",
+ "itertools 0.10.5",
"lazy_static",
"log",
"multimap",
@@ -5621,7 +5630,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "600d2f334aa05acb02a755e217ef1ab6dea4d51b58b7846588b747edec04efba"
dependencies = [
"anyhow",
- "itertools",
+ "itertools 0.10.5",
"proc-macro2",
"quote",
"syn 1.0.109",
@@ -5634,7 +5643,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe"
dependencies = [
"anyhow",
- "itertools",
+ "itertools 0.10.5",
"proc-macro2",
"quote",
"syn 1.0.109",
@@ -7252,7 +7261,7 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c12bc9199d1db8234678b7051747c07f517cdcf019262d1847b94ec8b1aee3e"
dependencies = [
- "itertools",
+ "itertools 0.10.5",
"nom",
"unicode_categories",
]
@@ -7378,6 +7387,7 @@ dependencies = [
"anyhow",
"derive_more",
"gpui2",
+ "itertools 0.11.0",
"log",
"refineable",
"rust-embed",
@@ -7656,7 +7666,7 @@ dependencies = [
"dirs 4.0.0",
"futures 0.3.28",
"gpui",
- "itertools",
+ "itertools 0.10.5",
"lazy_static",
"libc",
"mio-extras",
@@ -7687,7 +7697,7 @@ dependencies = [
"editor",
"futures 0.3.28",
"gpui",
- "itertools",
+ "itertools 0.10.5",
"language",
"lazy_static",
"libc",
@@ -8863,7 +8873,7 @@ dependencies = [
"futures 0.3.28",
"gpui",
"indoc",
- "itertools",
+ "itertools 0.10.5",
"language",
"language_selector",
"log",
@@ -9696,7 +9706,7 @@ dependencies = [
"gpui",
"indoc",
"install_cli",
- "itertools",
+ "itertools 0.10.5",
"language",
"lazy_static",
"log",
@@ -0,0 +1,45 @@
+use super::Ordered;
+
+/// A platform neutral representation of all geometry to be drawn for the current frame.
+pub struct Scene {
+ quads: Vec<Ordered<Quad>>,
+ glyphs: Vec<Ordered<Glyph>>,
+}
+
+impl Scene {
+ pub fn new() -> Self {
+ Scene {
+ quads: Vec::new(),
+ glyphs: Vec::new(),
+ }
+ }
+
+ pub fn add(&mut self, order: u32, primitive: impl Into<Primitive>) {
+ match primitive.into() {
+ Primitive::Quad(primitive) => self.quads.push(Ordered { order, primitive }),
+ Primitive::Glyph(primitive) => self.glyphs.push(Ordered { order, primitive }),
+ }
+ }
+
+ pub fn draw(&mut self) {
+ self.quads.sort_unstable();
+ self.glyphs.sort_unstable();
+ }
+}
+
+pub enum Primitive {
+ Quad(Quad),
+ Glyph(Glyph),
+ // Icon(Icon),
+ // Image(Image),
+ // Shadow(Shadow),
+ // Curve(Curve),
+}
+
+#[derive(Eq, Ord, PartialEq, PartialOrd)]
+pub struct Quad {}
+pub struct Glyph {}
+// pub struct Icon {}
+// pub struct Image {}
+// pub struct Shadow {}
+// pub struct Curve {}