Integer literals now support signs
This commit is contained in:
parent
0ce136585b
commit
776856a6a5
2
draw.go
2
draw.go
@ -214,6 +214,8 @@ func drawOctal (xOffset, yOffset int, number uint64) {
|
||||
application.SetColor(xOffset, yOffset, stone.ColorBlue)
|
||||
application.SetColor(xOffset + 1, yOffset, stone.ColorBlue)
|
||||
|
||||
number = drawSign(xOffset, yOffset, number)
|
||||
|
||||
for x := 0; x < 21; x ++ {
|
||||
bitOffset -= 3
|
||||
|
||||
|
6
main.go
6
main.go
@ -164,7 +164,11 @@ func onPress (button stone.Button, modifiers stone.Modifiers) {
|
||||
case *IntegerLiteral:
|
||||
integer := selectedExpression.(*IntegerLiteral)
|
||||
integer.value *= int64(integer.displayRadix)
|
||||
integer.value += int64(value)
|
||||
if integer.value < 0 {
|
||||
integer.value -= int64(value)
|
||||
} else {
|
||||
integer.value += int64(value)
|
||||
}
|
||||
}
|
||||
|
||||
redraw()
|
||||
|
11
tree.go
11
tree.go
@ -450,6 +450,13 @@ func (literal *IntegerLiteral) Previous () (previous Expression) {
|
||||
func (literal *IntegerLiteral) Render (target stone.Buffer, offset int) (moved int) {
|
||||
var output []rune
|
||||
value := literal.value
|
||||
|
||||
negative := false
|
||||
if value < 0 {
|
||||
negative = true
|
||||
value *= -1
|
||||
}
|
||||
|
||||
for value > 0 {
|
||||
digit := rune(value % int64(literal.displayRadix))
|
||||
value /= int64(literal.displayRadix)
|
||||
@ -479,6 +486,10 @@ func (literal *IntegerLiteral) Render (target stone.Buffer, offset int) (moved i
|
||||
output = append([]rune("0?"), output...)
|
||||
}
|
||||
|
||||
if negative {
|
||||
output = append([]rune { '-' }, output...)
|
||||
}
|
||||
|
||||
for _, character := range output {
|
||||
target.SetRune(offset + moved, 0, character)
|
||||
if selectedExpression == literal {
|
||||
|
Loading…
Reference in New Issue
Block a user