Skip to content

Commit

Permalink
Switch text examples to use SVG output
Browse files Browse the repository at this point in the history
This should give both better looking output and output with the correct
font. I really don't feel like debugging why the build doesn't have a
serif font.
  • Loading branch information
noelwelsh committed Aug 5, 2024
1 parent a084183 commit c0f9e19
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 8 deletions.
10 changes: 2 additions & 8 deletions docs/src/pages/pictures/text.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,7 @@ val hello =

The output is shown below.

@:image(hello.png) {
alt = A picture showing the text "Hello from Doodle!"
title = "Hello from Doodle!"
}
@:doodle("hello-example", "SvgTextExamples.drawHello")

In addition to creating pictures containing text, it also allows specifying the @:api(doodle.core.Font) used for the text, via the `font` method.
In this example we use the default serif font, in bold weight and 24 point size.
Expand All @@ -37,10 +34,7 @@ val font =

This produces the picture below.

@:image(font.png) {
alt = A picture showing the text "Change the font"
title = "Change the font"
}
@:doodle("font-example", "SvgTextExamples.drawFont")


## Implementation
Expand Down
41 changes: 41 additions & 0 deletions examples/js/src/main/scala/doodle/examples/TextExamples.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* Copyright 2015 Creative Scala
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package doodle.examples

import doodle.algebra.*
import doodle.core.*
import doodle.core.font.*
import doodle.syntax.all.*

/** All the examples from the Text documentation page, written in a backend
* independent style.
*/
trait TextExamples[Alg <: Layout & Text] extends BaseExamples[Alg] {
val hello =
text("Hello from Doodle!")

val font =
text("Change the font")
.font(Font.defaultSerif.bold.size(FontSize.points(24)))
//
// If you add a new example, also add it in here
val allPictures =
List(
hello,
font
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
* Copyright 2015 Creative Scala
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package doodle.examples.svg

import cats.effect.unsafe.implicits.global
import doodle.examples.TextExamples
import doodle.svg.*
import doodle.syntax.all.*

import scala.scalajs.js.annotation.*

@JSExportTopLevel("SvgTextExamples")
object SvgTextExamples extends TextExamples[Algebra] {
@JSExport
def drawHello(id: String): Unit = hello.drawWithFrame(Frame(id))

@JSExport
def drawfont(id: String): Unit = font.drawWithFrame(Frame(id))
}

0 comments on commit c0f9e19

Please sign in to comment.