The Trunk: Graphics-pre.367.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Graphics-pre.367.mcz

commits-2
Patrick Rein uploaded a new version of Graphics to project The Trunk:
http://source.squeak.org/trunk/Graphics-pre.367.mcz

==================== Summary ====================

Name: Graphics-pre.367
Author: pre
Time: 20 January 2017, 5:44:33.081379 pm
UUID: 6258ced8-1a7f-5344-914d-5a641a0734cf
Ancestors: Graphics-bp.366

Implements HTML colors with 8 characters denoting RGBa colors. Small refactoring of fromString: method.

=============== Diff against Graphics-bp.366 ===============

Item was added:
+ ----- Method: Color class>>fromHTMLString: (in category 'other') -----
+ fromHTMLString: aColorHex
+ "Do not call this method directly, call Color>>#fromString: instead as it is more generic"
+
+ | green red blue resultColor |
+ red := (Integer readFrom: (aColorHex first: 2) base: 16).
+ green := (Integer readFrom: (aColorHex copyFrom: 3 to: 4) base: 16).
+ blue := (Integer readFrom: (aColorHex copyFrom: 5 to: 6) base: 16).
+ resultColor := self r: red g: green b: blue range: 255.
+ ^ (aColorHex size = 8)
+ ifTrue: [resultColor alpha: ((Integer readFrom: (aColorHex last: 2) base: 16) / 255)]
+ ifFalse: [resultColor]!

Item was added:
+ ----- Method: Color class>>fromRGBString: (in category 'other') -----
+ fromRGBString: rgb
+ "Do not call this method directly, call Color>>#fromString: instead as it is more generic"
+
+ | green red blue |
+ red := (Integer readFrom:(rgb at: 1)) min: 255 max: 0.
+ green := (Integer readFrom:(rgb at: 2)) min: 255 max: 0.
+ blue := (Integer readFrom:(rgb at: 3)) min: 255 max: 0.
+ ^self r: red g: green b: blue range: 255!

Item was changed:
  ----- Method: Color class>>fromString: (in category 'instance creation') -----
  fromString: aString
  "for HTML color spec: #FFCCAA or white/black/red/other name, or an r,g,b triplet string"
  "Color fromString: '#FFCCAA'.
  Color fromString: 'white'.
  Color fromString: 'orange'
  Color fromString: '126,42,33' "
 
  | aColorHex rgb|
  aString isEmptyOrNil ifTrue: [ ^self white ].
  aString first = $#
  ifTrue: [ aColorHex := aString allButFirst ]
  ifFalse: [ aColorHex := aString ].
+
  "is the string a 6 digit hex number?"
+ ((aColorHex size = 6 or: [aColorHex size = 8]) and: [
- (aColorHex size = 6 and: [
  aColorHex allSatisfy: [ :each | '0123456789ABCDEFabcdef' includes: each ] ])
+ ifTrue: [^ self fromHTMLString: aColorHex ].
+
- ifTrue: [
- | green red blue |
- red := (Integer readFrom: (aColorHex first: 2) base: 16).
- green := (Integer readFrom: (aColorHex copyFrom: 3 to: 4) base: 16).
- blue := (Integer readFrom: (aColorHex last: 2) base: 16).
- ^self r: red g: green b: blue range: 255].
  "is the string in the form a,b,c ?"
  rgb := aColorHex findTokens: $, .
+ rgb size = 3 ifTrue: [^ self fromRGBString: rgb].
+
- rgb size = 3 ifTrue: [
- | green red blue |
- red := (Integer readFrom:(rgb at: 1)) min: 255 max: 0.
- green := (Integer readFrom:(rgb at: 2)) min: 255 max: 0.
- blue := (Integer readFrom:(rgb at: 3)) min: 255 max: 0.
- ^self r: red g: green b: blue range: 255].
  "try to match aColorHex with known named colors, case insensitive"
  ^self perform: (ColorNames detect: [:colorSymbol | aColorHex sameAs: colorSymbol] ifNone: [ #white ])!

Item was added:
+ ----- Method: TranslucentColor>>asHTMLColor (in category 'conversions') -----
+ asHTMLColor
+
+ ^ super asHTMLColor
+ , (Character digitValue: ((alpha bitShift: -4) bitAnd: 15))
+ , (Character digitValue: (alpha bitAnd: 15))!