(r binary.Reader)
| 156 | } |
| 157 | |
| 158 | func decodeDimension(r binary.Reader) (typedValue, error) { |
| 159 | radixes := []float32{1.0 / (1 << 8), |
| 160 | 1.0 / (1 << 15), |
| 161 | 1.0 / (1 << 23), |
| 162 | 1.0 / (1 << 31)} |
| 163 | v := r.Uint32() |
| 164 | fval := float32(int32(v&0xffffff00)) * radixes[(v>>4)&0x3] |
| 165 | switch v & 0xf { |
| 166 | case 0: |
| 167 | return valFloatPx(fval), nil |
| 168 | case 1: |
| 169 | return valFloatDp(fval), nil |
| 170 | case 2: |
| 171 | return valFloatSp(fval), nil |
| 172 | case 3: |
| 173 | return valFloatPt(fval), nil |
| 174 | case 4: |
| 175 | return valFloatIn(fval), nil |
| 176 | case 5: |
| 177 | return valFloatMm(fval), nil |
| 178 | default: |
| 179 | return nil, fmt.Errorf("Unknown dimension format %d", v&0xf) |
| 180 | } |
| 181 | } |
| 182 | |
| 183 | func decodeValue(r binary.Reader, xml *xmlTree) (typedValue, error) { |
| 184 | size := r.Uint16() |
no test coverage detected