42 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
	
| #if 0  // Disabled until updated to use current API.
 | |
| // Copyright 2019 Google LLC.
 | |
| // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
 | |
| #include "tools/fiddle/examples.h"
 | |
| // HASH=6d6f2082fcf59d9f02bfb1758b87db69
 | |
| REG_FIDDLE(Matrix_mapRadius, 256, 256, false, 0) {
 | |
| void draw(SkCanvas* canvas) {
 | |
|     SkPaint paint;
 | |
|     paint.setAntiAlias(true);
 | |
|     SkMatrix matrix;
 | |
|     const SkPoint center = {108, 93};
 | |
|     matrix.setScale(2, .5f, center.fX, center.fY);
 | |
|     matrix.postRotate(45, center.fX, center.fY);
 | |
|     const SkScalar circleRadius = 50;
 | |
|     SkScalar mappedRadius = matrix.mapRadius(circleRadius);
 | |
|     SkVector minorAxis, majorAxis;
 | |
|     matrix.mapVector(0, circleRadius, &minorAxis);
 | |
|     matrix.mapVector(circleRadius, 0, &majorAxis);
 | |
|     SkString mappedArea;
 | |
|     mappedArea.printf("area = %g", mappedRadius * mappedRadius);
 | |
|     canvas->drawString(mappedArea, 145, 250, paint);
 | |
|     canvas->drawString("mappedRadius", center.fX + mappedRadius + 3, center.fY, paint);
 | |
|     paint.setColor(SK_ColorRED);
 | |
|     SkString axArea;
 | |
|     axArea.printf("area = %g", majorAxis.length() * minorAxis.length());
 | |
|     paint.setStyle(SkPaint::kFill_Style);
 | |
|     canvas->drawString(axArea, 15, 250, paint);
 | |
|     paint.setStyle(SkPaint::kStroke_Style);
 | |
|     canvas->drawRect({10, 200, 10 + majorAxis.length(), 200 + minorAxis.length()}, paint);
 | |
|     paint.setColor(SK_ColorBLACK);
 | |
|     canvas->drawLine(center.fX, center.fY, center.fX + mappedRadius, center.fY, paint);
 | |
|     canvas->drawLine(center.fX, center.fY, center.fX, center.fY + mappedRadius, paint);
 | |
|     canvas->drawRect({140, 180, 140 + mappedRadius, 180 + mappedRadius}, paint);
 | |
|     canvas->concat(matrix);
 | |
|     canvas->drawCircle(center.fX, center.fY, circleRadius, paint);
 | |
|     paint.setColor(SK_ColorRED);
 | |
|     canvas->drawLine(center.fX, center.fY, center.fX + circleRadius, center.fY, paint);
 | |
|     canvas->drawLine(center.fX, center.fY, center.fX, center.fY + circleRadius, paint);
 | |
| }
 | |
| }  // END FIDDLE
 | |
| #endif  // Disabled until updated to use current API.
 |