Last active
August 29, 2015 14:03
-
-
Save ajstarks/ef452a52796643fb4f08 to your computer and use it in GitHub Desktop.
Slide generation experiments
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
"github.com/ajstarks/deck/generate" | |
"image" | |
"bufio" | |
_ "image/jpeg" | |
_ "image/png" | |
"strings" | |
"os" | |
) | |
func fitlist(d *generate.Deck, x, top, bot, size float64, list []string, n int) { | |
interval := (top - bot) / float64(len(list)) | |
for ; interval < size*1.5; size -= 0.75 { | |
fmt.Fprintf(os.Stderr, "%v %v\n", interval, size) | |
} | |
y := top | |
var opacity float64 | |
for i, s := range list { | |
if i == n { | |
opacity = 100.0 | |
} else { | |
opacity = 30.0 | |
} | |
d.Text(x, y, fmt.Sprintf("%d. %s", i+1, s), "serif", size, "", opacity) | |
y -= interval | |
} | |
} | |
func hero(d *generate.Deck, picture, quadrant string, margin float64, quote string, font string, size float64, color string) { | |
f, ferr := os.Open(picture) | |
if ferr != nil { | |
fmt.Fprintf(os.Stderr, "%v\n", ferr) | |
return | |
} | |
defer f.Close() | |
im, _, err := image.DecodeConfig(f) | |
if err != nil { | |
fmt.Fprintf(os.Stderr, "%s: %v\n", picture, err) | |
return | |
} | |
d.Image(50, 50, im.Width, im.Height, picture) | |
switch quadrant { | |
case "ul", "UL": | |
d.TextBlock(5, 90, quote, font, size, margin, color) | |
case "ur", "UR": | |
d.TextBlock(70, 90, quote, font, size, margin, color) | |
case "ll", "LL": | |
d.TextBlock(5, 20, quote, font, size, margin, color) | |
case "lr", "LR": | |
d.TextBlock(70, 20, quote, font, size, margin, color) | |
case "c", "center", "mid", "middle": | |
d.TextMid(50, 50, quote, font, size, color) | |
default: | |
d.TextMid(50, 50, quote, font, size, color) | |
} | |
} | |
func main() { | |
d := generate.NewSlides(os.Stdout, 0, 0) | |
d.StartDeck() | |
scanner := bufio.NewScanner(os.Stdin) | |
for scanner.Scan() { | |
data := scanner.Text() | |
d.StartSlide("black", "white") | |
fields := strings.Split(data, "~") | |
hero(d, fields[0], fields[1], 20, fields[2], "sans", 2, "white") | |
d.EndSlide() | |
} | |
if err := scanner.Err(); err != nil { | |
fmt.Fprintln(os.Stderr, "reading standard input:", err) | |
} | |
list := []string{"one", "two", "three", "four", "five", "six", "seven"} // , "eight", "nine", "ten"} | |
for i := 0; i < len(list); i++ { | |
g := 255 / (i + 2) | |
d.StartSlide(fmt.Sprintf("rgb(%d,%d,%d)", g, g, g), "white") | |
d.TextMid(20, 50, "Section", "sans", 7, "") | |
d.Line(40, 90, 40, 10, 0.1, "white") | |
fitlist(d, 45, 80, 5, 5, list, i) | |
d.EndSlide() | |
} | |
d.EndDeck() | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment