Corner Stitching in Swift @ Base Labs - Krakow

22
Corner Stitching in Swift Lightning Talk @ Base Labs Fernando Olivero

description

Corner Stitching is technique for representing and interacting with 2D layouts with “Manhattan” features, that enables linear time algorithms for searching, creation, deletion, or compaction. Corner Stitching was first introduced by John K. Ousterhout in 1982. In the context of my thesis, I’ve ported the original algorithms from pseudo code written in Pascal to Smalltalk, and more recently I’ve been working on a SWIFT implementation, which I will briefly discuss in this lighting talk.

Transcript of Corner Stitching in Swift @ Base Labs - Krakow

Page 1: Corner Stitching in Swift @ Base Labs - Krakow

Corner Stitching in SwiftLightning Talk @ Base Labs

Fernando Olivero

Page 2: Corner Stitching in Swift @ Base Labs - Krakow

2D Space2D Shapes

Page 3: Corner Stitching in Swift @ Base Labs - Krakow

Fixed Layout

Row

Column

Grid

Flow

Page 4: Corner Stitching in Swift @ Base Labs - Krakow

Custom Layout

Page 5: Corner Stitching in Swift @ Base Labs - Krakow

let point = CGPoint (10,200)

layout.shapeAt(point) ==

let layout =

Layout Protocol

Page 6: Corner Stitching in Swift @ Base Labs - Krakow

let point = CGPoint (10,200)

layout.shapeAt(point) ==

let shape =

let layout =

Layout Protocol

shape.neighbours() == [ ]

Page 7: Corner Stitching in Swift @ Base Labs - Krakow

Dynamic ?

Empty space after DELETE ?

Overlapping on INSERT?

Page 8: Corner Stitching in Swift @ Base Labs - Krakow

Layout Protocol

shapeAt(aPoint)

neighboursOf(aShape)

remove(aShape)

insertShapeAt(aFrame)

Array<Shapes>

Array<Array<Shapes>>

Array<Shapes>

Data Structure

Fixed Layout

Page 9: Corner Stitching in Swift @ Base Labs - Krakow

Custom Layout

Layout Protocol

Data Structure

Page 10: Corner Stitching in Swift @ Base Labs - Krakow

Custom Layout

Layout Protocol

Data Structure

O(1) ?O(n) ?0(2^n)?

O(n) ?O(n^2) ?

Page 11: Corner Stitching in Swift @ Base Labs - Krakow
Page 12: Corner Stitching in Swift @ Base Labs - Krakow

Solid Tile

Empty Tile

Maximal horizontal rule1

2

as Tall aspossible

Page 13: Corner Stitching in Swift @ Base Labs - Krakow

NeighboursOf(aShape)

O(#neighbours)

Page 14: Corner Stitching in Swift @ Base Labs - Krakow

ShapeAt(aPoint)

Page 15: Corner Stitching in Swift @ Base Labs - Krakow

InsertAt(aFrame,with:aValue)

On Average O(#AreaHeight)

Page 16: Corner Stitching in Swift @ Base Labs - Krakow

TilesBelow(anArea)

On Average O(#AreaHeight)

Page 17: Corner Stitching in Swift @ Base Labs - Krakow

Goodies I : Snowplow

O(#Tiles)

Page 18: Corner Stitching in Swift @ Base Labs - Krakow

Goodies II : Compaction

O(#Tiles)

Page 19: Corner Stitching in Swift @ Base Labs - Krakow

Goodies III : Routing

Page 20: Corner Stitching in Swift @ Base Labs - Krakow

DEMO

Page 21: Corner Stitching in Swift @ Base Labs - Krakow
Page 22: Corner Stitching in Swift @ Base Labs - Krakow

Corner Stitching in SwiftLightning Talk @ Base Labs

Fernando Olivero