Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(788)

Unified Diff: sky/examples/style/hex-layout.sky

Issue 980323003: Clean up examples directory (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/examples/style/block-layout.sky ('k') | sky/examples/style/sky-core-styles.sky » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/examples/style/hex-layout.sky
diff --git a/sky/examples/style/hex-layout.sky b/sky/examples/style/hex-layout.sky
deleted file mode 100644
index 5225ddafc2e1f14077be57b379dfd8382cf09e42..0000000000000000000000000000000000000000
--- a/sky/examples/style/hex-layout.sky
+++ /dev/null
@@ -1,152 +0,0 @@
-#!mojo mojo:sky
-<import src="sky:core" as="sky"/>
-<script>
- class BeehiveLayoutManager extends sky.LayoutManager {
- function layout(width, height) {
- if (width == null)
- width = this.getIntrinsicWidth().value;
- let autoHeight = false;
- if (height == null) {
- height = 0;
- autoHeight = true;
- }
- this.assumeDimensions(width, height);
- let cellCount = this.node.getProperty('beehive-count');
- let cellDim = width / cellCount;
- let children = this.walkChildren();
- let loop = children.next();
- let x = 0;
- let y = 0;
- while (!loop.done) {
- let child = loop.value;
- if (child.needsLayout) {
- child.layoutManager.layout(cellDim, cellDim);
- // we ignore the size the child reported from layout(), and force it to the cell dimensions
- this.setChildSize(child, cellDim, cellDim);
- } else if (child.descendantNeedsLayout) {
- child.layoutManager.layoutDescendants();
- this.setChildSize(child, cellDim, cellDim);
- }
- this.setChildPosition(child, x * cellDim + (y % 2) * cellDim/2, y * 3/4 * cellDim);
- x += 1;
- if (x > cellCount) {
- y += 1;
- x = 0;
- }
- loop = children.next();
- }
- if (height == 0)
- height = (1 + y * 3/4) * cellDim;
- this.markAsLaidOut();
- return {
- width: width,
- height: height,
- }
- }
- function getIntrinsicHeight() {
- let height = this.node.getProperty('height');
- if (typeof height != 'number') {
- // e.g. height: auto
- width = this.getIntrinsicWidth().value;
- let cellCount = this.node.getProperty('beehive-count');
- let cellDim = width / cellCount;
- let children = this.walkChildren();
- let loop = children.next();
- let childCount = 0;
- while (!loop.done) {
- childCount += 1;
- loop.next();
- }
- if (childCount > 0)
- height = cellDim * (1/4 + Math.ceil(childCount / cellCount) * 3/4);
- else
- height = 0;
- }
- return super(height); // does the equivalent of getIntrinsicWidth() above, applying min-height etc
- }
- function paintChildren(canvas) {
- let width = this.node.width;
- let cellCount = this.node.getProperty('beehive-count');
- let cellDim = width / cellCount;
- let children = this.walkChildren();
- let loop = children.next();
- while (!loop.done) {
- let child = loop.value;
- canvas.save();
- try {
- canvas.beginPath();
- canvas.moveTo(child.x, child.y + cellDim/4);
- canvas.lineTo(child.x + cellDim/2, child.y);
- canvas.lineTo(child.x + cellDim, child.y + cellDim/4);
- canvas.lineTo(child.x + cellDim, child.y + 3*cellDim/4);
- canvas.lineTo(child.x + cellDim/2, child.y + cellDim);
- canvas.moveTo(child.x, child.y + 3*cellDim/4);
- canvas.closePath();
- canvas.clip();
- canvas.paintChild(child);
- } finally {
- canvas.restore();
- }
- loop = children.next();
- }
- }
- function inHex(topLeftX, topLeftY, width, height, hitX, hitY) {
- let centerX = topLeftX - width/2;
- let absCenteredHitX = Math.abs(hitX - centerX);
- if (absCenteredHitX > width/2)
- return false;
- let centerY = topLeftY - height/2;
- let absCenteredHitY = Math.abs(hitY - centerY);
- if (absCenteredHitY > height/2)
- return false;
- if (absCenteredHitY < height * absCenteredHitX / (2 * width) + height / 2)
- return true;
- return false;
- }
- function hitTest(x, y) {
- let cellCount = this.node.getProperty('beehive-count');
- let cellDim = width / cellCount;
- let children = this.walkChildren();
- let loop = children.next();
- while (!loop.done) {
- let child = loop.value;
- if (this.inHex(child.x, child.y, child.width, child.height, x, y))
- return child.layoutManager.hitTest(x-child.x, y-child.y);
- loop = children.next();
- }
- return this.node;
- }
- }
- sky.registerLayoutManager('beehive', BeehiveLayoutManager);
- let BeehiveCountStyleGrammar = new StyleGrammar();
- BeehiveCountStyleGrammar.addParser((tokens) => {
- let token = tokens.next();
- if (token.done)
- throw new Error();
- if (token.value.kind != 'number')
- throw new Error();
- if (token.value.value <= 0)
- throw new Error();
- if (Math.trunc(token.value.value) != token.value.value) // is integer
- throw new Error();
- return new NumericStyleValue(token.value.value);
- });
- sky.registerProperty({
- name: 'beehive-count',
- type: BeehiveCountStyleGrammar,
- inherits: true,
- initialValue: 5,
- needsLayout: true,
- });
-</script>
-<style>
- div { display: beehive; beehive-count: 3; }
-</style>
-<div>
- <t>Hello</t>
- <t>World</t>
- <t>How</t>
- <t>Are</t>
- <t>You</t>
- <t>Today?</t>
-</div>
« no previous file with comments | « sky/examples/style/block-layout.sky ('k') | sky/examples/style/sky-core-styles.sky » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698