Skip to content

Commit d0c1f62

Browse files
committed
Applied changes from pull request #16479 (“Add setting to set the world renderer canvas scale factor automatically”) to Pharo 11.
1 parent 3cbdb6e commit d0c1f62

File tree

4 files changed

+47
-6
lines changed

4 files changed

+47
-6
lines changed

src/OSWindow-Core/OSNullFormRenderer.class.st

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ Class {
1111
OSNullFormRenderer >> newExtent: anExtent [
1212
]
1313

14+
{ #category : #accessing }
15+
OSNullFormRenderer >> outputExtent [
16+
17+
^ 0@0
18+
]
19+
1420
{ #category : #'updating screen' }
1521
OSNullFormRenderer >> updateAll [
1622
"Do nothing"

src/OSWindow-Core/OSWindowFormRenderer.class.st

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,12 @@ OSWindowFormRenderer >> newExtent: newExtent [
6060
form setExtent: newExtent depth: form depth
6161
]
6262

63+
{ #category : #accessing }
64+
OSWindowFormRenderer >> outputExtent [
65+
66+
self subclassResponsibility
67+
]
68+
6369
{ #category : #accessing }
6470
OSWindowFormRenderer >> pixelExtent [
6571
^ form ifNotNil: [ form extent ] ifNil: [ 1@1 ]

src/OSWindow-Core/OSWorldRenderer.class.st

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,24 @@ Class {
1212
'previousFrameRenderingTime'
1313
],
1414
#classInstVars : [
15-
'canvasScaleFactor'
15+
'canvasScaleFactor',
16+
'autoSetCanvasScaleFactor'
1617
],
1718
#category : #'OSWindow-Core-Morphic'
1819
}
1920

21+
{ #category : #accessing }
22+
OSWorldRenderer class >> autoSetCanvasScaleFactor [
23+
24+
^ autoSetCanvasScaleFactor ifNil: [ autoSetCanvasScaleFactor := false ]
25+
]
26+
27+
{ #category : #accessing }
28+
OSWorldRenderer class >> autoSetCanvasScaleFactor: boolean [
29+
30+
autoSetCanvasScaleFactor := boolean
31+
]
32+
2033
{ #category : #accessing }
2134
OSWorldRenderer class >> canvasScaleFactor [
2235

@@ -52,12 +65,19 @@ OSWorldRenderer class >> settingsOn: aBuilder [
5265

5366
<systemsettings>
5467

55-
(aBuilder pickOne: #canvasScaleFactor)
68+
(aBuilder group: #canvasScaleFactorGroup)
5669
parent: #appearance;
57-
label: 'Canvas scale factor for OSWorldRenderer';
58-
target: self;
59-
domainValues: (1 to: 5);
60-
default: 1
70+
label: 'World renderer canvas scaling';
71+
with: [
72+
(aBuilder pickOne: #canvasScaleFactor)
73+
label: 'Canvas scale factor';
74+
target: self;
75+
domainValues: (1 to: 5);
76+
default: 1.
77+
(aBuilder setting: #autoSetCanvasScaleFactor)
78+
label: 'Set canvas scale factor automatically';
79+
target: self;
80+
default: false ]
6181
]
6282

6383
{ #category : #accessing }
@@ -97,6 +117,9 @@ OSWorldRenderer >> checkForNewScreenSize [
97117
windowRenderer := self osWindowRenderer.
98118
windowRenderer ifNil: [ ^ self ].
99119

120+
(world == World and: [ self class autoSetCanvasScaleFactor ]) ifTrue: [
121+
self class canvasScaleFactor: (windowRenderer outputExtent / self windowExtent) min * self screenScaleFactor ].
122+
100123
(display isNil or: [ display extent = self actualDisplaySize and: [ world worldState realWindowExtent = self actualScreenSize ] ])
101124
ifTrue: [ ^ self ].
102125

src/OSWindow-SDL2/OSSDL2FormRenderer.class.st

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ OSSDL2FormRenderer >> initialize [
6969
mutex := Mutex new
7070
]
7171

72+
{ #category : #accessing }
73+
OSSDL2FormRenderer >> outputExtent [
74+
75+
^ renderer outputExtent
76+
]
77+
7278
{ #category : #private }
7379
OSSDL2FormRenderer >> primitiveUpdateRectangle: rectangle externalForm: externalForm [
7480

0 commit comments

Comments
 (0)