プロジェクト

全般

プロフィール

« | » 

リビジョン 2455da7e

高徹 高橋 徹 さんが10年以上前に追加

SVG版の操作・見栄えの改善

  • 拡大・縮小時はウィンドウサイズを変更するようにした(以前は拡大しても200x200で切れていた)
  • 拡大・縮小の範囲を制限(大きくなりすぎず、小さくなりすぎない)
  • 短針、長針の形状を若干スリムにした
  • 文字盤の5分刻みの長さを少し長くした
  • タッチパネルの長押しでポップアップメニューを出すようにした

差分を表示:

AnalogClockSvg/test/analogclocksvg/AnalogClockControllerTest.java
/*
* Copyright © 2014 TAKAHASHI,Toru
*/
package analogclocksvg;
import java.time.LocalTime;
import java.util.stream.IntStream;
import static java.util.stream.Collectors.joining;
import javafx.geometry.Point2D;
import javafx.scene.shape.Line;
import javafx.scene.transform.Rotate;
import static org.hamcrest.CoreMatchers.is;
import org.junit.Test;
import static org.junit.Assert.*;
import org.junit.Before;
/**
*
* @author TAKAHASHI,Toru
*/
public class AnalogClockControllerTest {
AnalogClockController sut;
public AnalogClockControllerTest() {
}
@Before
public void setUp() {
sut = new AnalogClockController();
}
@Test
public void getMinuteAngleのテスト() {
LocalTime time = LocalTime.of(0, 0, 30);
assertThat(sut.getMinuteAgnel(time), is(3));
}
@Test
public void 文字盤の分刻みSVGデータ生成() {
String pathData = IntStream.range(0, 60)
.mapToObj(this::createLine)
.map(line -> String.format("M %.1f,%.1f L %.1f,%.1f", line.getStartX(), line.getStartY(), line.getEndX(), line.getEndY()))
.collect(joining(" "));
System.out.println(pathData);
}
private Line createLine(int minute) {
Rotate rot = new Rotate(minute * 6, 100, 100);
Point2D p0 = rot.transform(100, minute % 5 == 0 ? 12 : 15);
Point2D p1 = rot.transform(100, minute % 5 == 0 ? 20 : 16);
Line line = new Line(p0.getX(), p0.getY(), p1.getX(), p1.getY());
return line;
}
}
/*
* Copyright © 2014 TAKAHASHI,Toru
*/
package analogclocksvg;
import java.time.LocalTime;
import java.util.stream.IntStream;
import static java.util.stream.Collectors.joining;
import javafx.geometry.Point2D;
import javafx.scene.shape.Line;
import javafx.scene.transform.Rotate;
import static org.hamcrest.CoreMatchers.is;
import org.junit.Test;
import static org.junit.Assert.*;
import org.junit.Before;
/**
*
* @author TAKAHASHI,Toru
*/
public class AnalogClockControllerTest {
AnalogClockController sut;
public AnalogClockControllerTest() {
}
@Before
public void setUp() {
sut = new AnalogClockController();
}
@Test
public void getMinuteAngleのテスト() {
LocalTime time = LocalTime.of(0, 0, 30);
assertThat(sut.getMinuteAgnel(time), is(3));
}
@Test
public void 文字盤の分刻みSVGデータ生成() {
String pathData = IntStream.range(0, 60)
.mapToObj(this::createLine)
.map(line -> String.format("M %.1f,%.1f L %.1f,%.1f", line.getStartX(), line.getStartY(), line.getEndX(), line.getEndY()))
.collect(joining(" "));
System.out.println(pathData);
}
private Line createLine(int minute) {
Rotate rot = new Rotate(minute * 6, 100, 100);
Point2D p0 = rot.transform(100, minute % 5 == 0 ? 12 : 15);
Point2D p1 = rot.transform(100, minute % 5 == 0 ? 22 : 16);
Line line = new Line(p0.getX(), p0.getY(), p1.getX(), p1.getY());
return line;
}
}

他の形式にエクスポート: Unified diff