[Vm-dev] VM Maker: VMMaker-tfel.358.mcz
commits at source.squeak.org
commits at source.squeak.org
Mon Mar 30 14:04:17 UTC 2015
Tim Felgentreff uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker-tfel.358.mcz
==================== Summary ====================
Name: VMMaker-tfel.358
Author: tfel
Time: 11 February 2015, 1:43:59.319 pm
UUID: b8cdfbbd-911c-2848-8a87-286f070bee95
Ancestors: VMMaker-dtl.357
Fix simulation of full world draw
=============== Diff against VMMaker-dtl.357 ===============
Item was changed:
----- Method: BitBltSimulation>>loadColorMap (in category 'interpreter interface') -----
loadColorMap
"ColorMap, if not nil, must be longWords, and
2^N long, where N = sourceDepth for 1, 2, 4, 8 bits,
or N = 9, 12, or 15 (3, 4, 5 bits per color) for 16 or 32 bits."
| cmSize oldStyle oop cmOop |
<inline: true>
cmFlags := cmMask := cmBitsPerColor := 0.
cmShiftTable := nil.
cmMaskTable := nil.
cmLookupTable := nil.
cmOop := interpreterProxy fetchPointer: BBColorMapIndex ofObject: bitBltOop.
cmOop = interpreterProxy nilObject ifTrue:[^true].
cmFlags := ColorMapPresent. "even if identity or somesuch - may be cleared later"
oldStyle := false.
(interpreterProxy isWords: cmOop) ifTrue:[
"This is an old-style color map (indexed only, with implicit RGBA conversion)"
cmSize := interpreterProxy slotSizeOf: cmOop.
cmLookupTable := interpreterProxy firstIndexableField: cmOop.
oldStyle := true.
- self cCode: '' inSmalltalk:
- [self assert: cmLookupTable unitSize = 4].
] ifFalse: [
"A new-style color map (fully qualified)"
((interpreterProxy isPointers: cmOop)
and:[(interpreterProxy slotSizeOf: cmOop) >= 3]) ifFalse:[^false].
cmShiftTable := self loadColorMapShiftOrMaskFrom:
(interpreterProxy fetchPointer: 0 ofObject: cmOop).
cmMaskTable := self loadColorMapShiftOrMaskFrom:
(interpreterProxy fetchPointer: 1 ofObject: cmOop).
oop := interpreterProxy fetchPointer: 2 ofObject: cmOop.
oop = interpreterProxy nilObject
ifTrue:[cmSize := 0]
ifFalse:[(interpreterProxy isWords: oop) ifFalse:[^false].
cmSize := (interpreterProxy slotSizeOf: oop).
cmLookupTable := interpreterProxy firstIndexableField: oop].
cmFlags := cmFlags bitOr: ColorMapNewStyle.
self cCode: '' inSmalltalk:
[self assert: cmShiftTable unitSize = 4.
self assert: cmMaskTable unitSize = 4.
self assert: cmLookupTable unitSize = 4].
].
(cmSize bitAnd: cmSize - 1) = 0 ifFalse:[^false].
cmMask := cmSize - 1.
cmBitsPerColor := 0.
cmSize = 512 ifTrue: [cmBitsPerColor := 3].
cmSize = 4096 ifTrue: [cmBitsPerColor := 4].
cmSize = 32768 ifTrue: [cmBitsPerColor := 5].
cmSize = 0
ifTrue:[cmLookupTable := nil. cmMask := 0]
ifFalse:[cmFlags := cmFlags bitOr: ColorMapIndexedPart].
oldStyle "needs implicit conversion"
ifTrue:[ self setupColorMasks].
"Check if colorMap is just identity mapping for RGBA parts"
(self isIdentityMap: cmShiftTable with: cmMaskTable)
ifTrue:[ cmMaskTable := nil. cmShiftTable := nil ]
ifFalse:[ cmFlags := cmFlags bitOr: ColorMapFixedPart].
^true!
Item was added:
+ ----- Method: BitBltSimulator>>halftoneAt: (in category 'simulation') -----
+ halftoneAt: idx
+
+ ^ halftoneForm at: (idx \\ halftoneHeight * 4) + 1!
More information about the Vm-dev
mailing list