| OLD | NEW |
| 1 package main | 1 package main |
| 2 | 2 |
| 3 import ( | 3 import ( |
| 4 "bytes" | 4 "bytes" |
| 5 "crypto/md5" | 5 "crypto/md5" |
| 6 "database/sql" | 6 "database/sql" |
| 7 "encoding/base64" | 7 "encoding/base64" |
| 8 "encoding/binary" | 8 "encoding/binary" |
| 9 "encoding/json" | 9 "encoding/json" |
| 10 "flag" | 10 "flag" |
| (...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 365 return writeTemplate(filename, t, userCode{Code: code, Titlebar: Titleba
r{GitHash: gitHash, GitInfo: gitInfo}}) | 365 return writeTemplate(filename, t, userCode{Code: code, Titlebar: Titleba
r{GitHash: gitHash, GitInfo: gitInfo}}) |
| 366 } | 366 } |
| 367 | 367 |
| 368 // expandCode expands the template into a file and calculates the MD5 hash. | 368 // expandCode expands the template into a file and calculates the MD5 hash. |
| 369 func expandCode(code string, source int) (string, error) { | 369 func expandCode(code string, source int) (string, error) { |
| 370 // in order to support fonts in the chroot jail, we need to make sure | 370 // in order to support fonts in the chroot jail, we need to make sure |
| 371 // we're using portable typefaces. | 371 // we're using portable typefaces. |
| 372 // TODO(humper): Make this more robust, supporting things like setTypef
ace | 372 // TODO(humper): Make this more robust, supporting things like setTypef
ace |
| 373 | 373 |
| 374 inputCodeLines := strings.Split(code, "\n") | 374 inputCodeLines := strings.Split(code, "\n") |
| 375 » outputCodeLines := []string{} | 375 » outputCodeLines := []string{"DECLARE_bool(portableFonts);"} |
| 376 for _, line := range inputCodeLines { | 376 for _, line := range inputCodeLines { |
| 377 outputCodeLines = append(outputCodeLines, line) | 377 outputCodeLines = append(outputCodeLines, line) |
| 378 » » if strings.HasPrefix(strings.TrimSpace(line), "SkPaint ") { | 378 » » if strings.HasPrefix(strings.TrimSpace(line), "SkPaint p") { |
| 379 » » » outputCodeLines = append(outputCodeLines, "sk_tool_utils
::set_portable_typeface(&p);") | 379 » » » outputCodeLines = append(outputCodeLines, "FLAGS_portabl
eFonts = true;") |
| 380 » » » outputCodeLines = append(outputCodeLines, "sk_tool_utils
::set_portable_typeface(&p, \"Helvetica\", SkTypeface::kNormal);") |
| 380 } | 381 } |
| 381 } | 382 } |
| 382 | 383 |
| 383 fontFriendlyCode := strings.Join(outputCodeLines, "\n") | 384 fontFriendlyCode := strings.Join(outputCodeLines, "\n") |
| 384 | 385 |
| 385 h := md5.New() | 386 h := md5.New() |
| 386 h.Write([]byte(fontFriendlyCode)) | 387 h.Write([]byte(fontFriendlyCode)) |
| 387 binary.Write(h, binary.LittleEndian, int64(source)) | 388 binary.Write(h, binary.LittleEndian, int64(source)) |
| 388 hash := fmt.Sprintf("%x", h.Sum(nil)) | 389 hash := fmt.Sprintf("%x", h.Sum(nil)) |
| 389 // At this point we are running in skia/experimental/webtry, making cach
e a | 390 // At this point we are running in skia/experimental/webtry, making cach
e a |
| (...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 872 http.HandleFunc("/sources/", autogzip.HandleFunc(sourcesHandler)) | 873 http.HandleFunc("/sources/", autogzip.HandleFunc(sourcesHandler)) |
| 873 | 874 |
| 874 // Resources are served directly | 875 // Resources are served directly |
| 875 // TODO add support for caching/etags/gzip | 876 // TODO add support for caching/etags/gzip |
| 876 http.Handle("/res/", autogzip.Handle(http.FileServer(http.Dir("./")))) | 877 http.Handle("/res/", autogzip.Handle(http.FileServer(http.Dir("./")))) |
| 877 | 878 |
| 878 // TODO Break out /c/ as it's own handler. | 879 // TODO Break out /c/ as it's own handler. |
| 879 http.HandleFunc("/", autogzip.HandleFunc(mainHandler)) | 880 http.HandleFunc("/", autogzip.HandleFunc(mainHandler)) |
| 880 log.Fatal(http.ListenAndServe(*port, nil)) | 881 log.Fatal(http.ListenAndServe(*port, nil)) |
| 881 } | 882 } |
| OLD | NEW |