Subversion Repositories DashDisplay

Rev

Rev 13 | Rev 19 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 13 Rev 15
Line 195... Line 195...
195
{
195
{
196
        return ((ascii_lucida_bits[(y*ascii_lucida_width)/8+(x/8)])>>(x&7)) & 1 ;
196
        return ((ascii_lucida_bits[(y*ascii_lucida_width)/8+(x/8)])>>(x&7)) & 1 ;
197
}
197
}
198
 
198
 
199
 
199
 
200
void font_digits( uint8_t digits,uint8_t dp_pos,  int val)
200
static uint8_t format_num(char * buff, uint8_t digits,uint8_t dp_pos,int val)
201
{
201
{
202
        char buff[9] = "        ";
202
  digits++;
203
        uint8_t pos = digits;
203
  uint8_t pos = digits;
-
 
204
  uint8_t dp_loc = pos - dp_pos;
-
 
205
  uint8_t sign = 0;
-
 
206
  if(val<0)
-
 
207
  {
-
 
208
        sign = 1;
-
 
209
        val = -val;
-
 
210
  }
-
 
211
 
204
        buff[pos]=0;
212
  buff[pos]=0;
205
        while (pos)
213
  while (pos)
-
 
214
  {
-
 
215
        if(pos == dp_loc )
206
        {
216
        {
207
                if(pos==dp_pos)
-
 
208
                {
217
 
209
                        buff[--pos]='.';
218
                buff[--pos]='.';
210
                }
-
 
211
                else
-
 
212
                {
-
 
213
                   buff[--pos] = val%10 + '0';
-
 
214
                   val/=10;
-
 
215
                   if(val==0 && pos<dp_pos)
-
 
216
                         break;
-
 
217
                }
-
 
218
        }
219
        }
-
 
220
        else
-
 
221
        {
-
 
222
           buff[--pos] = val%10 + '0';
-
 
223
           val/=10;
-
 
224
           if(val==0 && pos< dp_loc)
-
 
225
                 break;
-
 
226
        }
-
 
227
  }
-
 
228
  if(sign)
-
 
229
 {
-
 
230
        buff[--pos] =  '-';
-
 
231
 }
-
 
232
 return digits;
-
 
233
}
-
 
234
 
-
 
235
 
-
 
236
void font_digits( uint8_t digits,uint8_t dp_pos,  int val)
-
 
237
{
-
 
238
        char buff[10] = "        ";
-
 
239
        uint8_t len = format_num(buff, digits,dp_pos,val);
219
        font_puts(buff);
240
        font_puts(buff);
220
}
241
}
221
 
242
 
-
 
243
 
222
void font_sig_digits(uint8_t x, uint8_t y,uint8_t justify,int val)
244
void font_sig_digits(uint8_t x, uint8_t y,uint8_t right_justify,uint8_t dp_pos, int val)
223
{
245
{
224
  int digits=1;
246
  char digits;
-
 
247
  char sign = 0;
-
 
248
  int uval;
-
 
249
  if (val < 0)
-
 
250
  {
-
 
251
          uval = -val;
-
 
252
          sign = 1; // mark as negative
-
 
253
  }
-
 
254
  else
-
 
255
  {
-
 
256
          uval = val;
-
 
257
  }
-
 
258
  if(uval<10) // always one digit for a sign or space, one for a digit
-
 
259
  {
-
 
260
          digits = 1;
-
 
261
  }
225
  if(val>=10 && val <100)
262
  if(uval>=10 && uval <100)
226
  {
263
  {
227
          if(justify) x-=1;
-
 
228
          digits = 2;
264
          digits = 2;
229
  }
265
  }
230
  if(val>=100 && val < 1000)
266
  if(uval>=100 && uval < 1000)
231
  {
267
  {
232
         if(justify) x-=2;
-
 
233
         digits =3;
268
         digits =3;
234
  }
269
  }
235
  if(val>=1000)
270
  if(uval>=1000)
236
  {
271
  {
237
         if(justify) x-=3;
-
 
238
         digits=4;
272
         digits=4;
239
  }
273
  }
-
 
274
  // backup for the - sign if right justified
-
 
275
  if(right_justify)
-
 
276
  {
-
 
277
         if(dp_pos<10)
-
 
278
     {
-
 
279
           digits+=2;
-
 
280
     }
-
 
281
         else
-
 
282
         {
-
 
283
                 digits+=1;
-
 
284
         }
-
 
285
     x-=(digits);
-
 
286
  }
-
 
287
 
-
 
288
 
240
  font_gotoxy(x,y);
289
  font_gotoxy(x,y);
241
  font_digits(digits,10,val);
290
  font_digits(digits,dp_pos,val);
242
}
291
}
243
 
292
 
244
 
293
 
245
#define FONTX 10
294
#define FONTX 10
246
#define FONTY 18
295
#define FONTY 18
Line 280... Line 329...
280
 
329
 
281
}
330
}
282
 
331
 
283
void print_digits(uint8_t x, uint8_t y, uint8_t digits,uint8_t dp_pos,  int val)
332
void print_digits(uint8_t x, uint8_t y, uint8_t digits,uint8_t dp_pos,  int val)
284
{
333
{
285
        char buff[9] = "        ";
-
 
286
        uint8_t pos = digits;
-
 
287
        buff[pos]=0;
-
 
288
        while (pos)
-
 
289
        {
-
 
290
                if(pos==dp_pos)
-
 
291
                {
-
 
292
                        buff[--pos]='.';
-
 
293
                }
-
 
294
                else
-
 
295
                {
-
 
296
                   buff[--pos] = val%10 + '0';
-
 
297
                   val/=10;
-
 
298
                   if(val==0 && pos<dp_pos)
-
 
299
                         break;
-
 
300
                }
-
 
301
        }
-
 
302
 
334
 
-
 
335
 
-
 
336
        char buff[10] = "        ";
-
 
337
        uint8_t len = format_num(buff, digits+1,dp_pos,val);
303
    print_large_string(buff,x,y,digits);
338
    print_large_string(buff,x,y,len);
304
    }
339
}
305
 
340
 
306
 
341
 
307
 
342
 
308
 
343
 
309
 
344