mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
Merge pull request #24 from Chris--A/format-proxy
Format proxy for custom printing.
This commit is contained in:
commit
295496ccbb
@ -21,6 +21,14 @@
|
||||
|
||||
#include "Angle.h"
|
||||
|
||||
AngleFormat::AngleFormat( const Angle &ref, AngleFormatMode format )
|
||||
: angle(ref), mode(format) {}
|
||||
|
||||
size_t AngleFormat::printTo(Print& p) const
|
||||
{
|
||||
return angle.printTo( p, mode );
|
||||
}
|
||||
|
||||
Angle::Angle(const double alpha)
|
||||
{
|
||||
double a = alpha;
|
||||
@ -45,21 +53,34 @@ Angle::Angle(const double alpha)
|
||||
}
|
||||
|
||||
// PRINTING
|
||||
size_t Angle::printTo(Print& p) const
|
||||
size_t Angle::printTo(Print& p, AngleFormatMode mode) const
|
||||
{
|
||||
unsigned char c = mode;
|
||||
|
||||
size_t n = 0;
|
||||
n += p.print(d);
|
||||
n += p.print('.');
|
||||
if (m < 10) n += p.print('0');
|
||||
n += p.print(m);
|
||||
n += p.print('\'');
|
||||
if (s < 10) n += p.print('0');
|
||||
n += p.print(s);
|
||||
n += p.print('\"');
|
||||
if (t < 100) n += p.print('0');
|
||||
if (t < 10) n += p.print('0');
|
||||
n += p.print(t);
|
||||
|
||||
if( --c )
|
||||
{
|
||||
if (m < 10) n += p.print('0');
|
||||
n += p.print(m);
|
||||
n += p.print('\'');
|
||||
|
||||
if( --c )
|
||||
{
|
||||
if (s < 10) n += p.print('0');
|
||||
n += p.print(s);
|
||||
n += p.print('\"');
|
||||
|
||||
if( c == 1 )
|
||||
{
|
||||
if (t < 100) n += p.print('0');
|
||||
if (t < 10) n += p.print('0');
|
||||
n += p.print(t);
|
||||
}
|
||||
}
|
||||
}
|
||||
return n;
|
||||
};
|
||||
|
||||
@ -137,7 +158,7 @@ Angle Angle::subHelper(const Angle &a)
|
||||
|
||||
Angle Angle::operator * (const double dd)
|
||||
{
|
||||
return Angle(this->toDouble() * dd);
|
||||
return Angle(this->toDouble() * dd);
|
||||
}
|
||||
|
||||
Angle Angle::operator / (const double dd)
|
||||
|
@ -9,6 +9,8 @@
|
||||
//
|
||||
// Released to the public domain
|
||||
//
|
||||
// AngleFormat proxy added 03/03/15 by Christoper Andrews.
|
||||
//
|
||||
|
||||
#include <math.h>
|
||||
|
||||
@ -20,7 +22,22 @@
|
||||
|
||||
#include "Printable.h"
|
||||
|
||||
#define ANGLE_LIB_VERSION "0.1.02"
|
||||
#define ANGLE_LIB_VERSION "0.1.03"
|
||||
|
||||
class Angle;
|
||||
|
||||
enum AngleFormatMode{
|
||||
D = 1, M, S, T
|
||||
};
|
||||
|
||||
struct AngleFormat : Printable{
|
||||
|
||||
AngleFormat( const Angle &ref, AngleFormatMode format );
|
||||
size_t printTo(Print& p) const;
|
||||
|
||||
const Angle ∠
|
||||
AngleFormatMode mode;
|
||||
};
|
||||
|
||||
class Angle: public Printable
|
||||
{
|
||||
@ -38,7 +55,11 @@ public:
|
||||
int second() { return s; };
|
||||
int thousand() { return t; };
|
||||
|
||||
size_t printTo(Print& p) const;
|
||||
size_t printTo(Print& p) const { return printTo( p, T ); }
|
||||
size_t printTo(Print& p, AngleFormatMode mode) const;
|
||||
|
||||
AngleFormat format( AngleFormatMode format ) { return AngleFormat( *this, format ); }
|
||||
|
||||
double toDouble();
|
||||
double toRadians() { return toDouble() * PI / 180.0; };
|
||||
|
||||
|
24
libraries/Angle/examples/format_angle/format_angle.ino
Normal file
24
libraries/Angle/examples/format_angle/format_angle.ino
Normal file
@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Printing a formatted Angle example.
|
||||
*
|
||||
* Written by: Christopher Andrews (https://github.com/Chris--A)
|
||||
*
|
||||
* Licenced under MIT, free to use, blah blah...
|
||||
*/
|
||||
|
||||
#include <Angle.h>
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
|
||||
Angle angle( 23, 12, 10, 123 );
|
||||
|
||||
Serial.println( angle ); // Print the most verbose version ( same as angle.format(T) )
|
||||
Serial.println( "-------------------" );
|
||||
Serial.println( angle.format(D) ); // Print only degree value.
|
||||
Serial.println( angle.format(M) ); // Output includes minutes.
|
||||
Serial.println( angle.format(S) ); // Output includes minutes, seconds.
|
||||
Serial.println( angle.format(T) ); // Output includes minutes, seconds, thousands.
|
||||
}
|
||||
|
||||
void loop() {}
|
Loading…
Reference in New Issue
Block a user