[recipes/unit_convert: 2/4] Added human_readability function to e.g. display 1 cup rather than 16 tablespoons
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [recipes/unit_convert: 2/4] Added human_readability function to e.g. display 1 cup rather than 16 tablespoons
- Date: Tue, 29 Aug 2017 12:30:03 +0000 (UTC)
commit 2eecd4c54ed8db21d844f9cadea34f94b9251bcc
Author: Paxana Amanda Xander <veganbikepunk gmail com>
Date: Mon Aug 28 14:28:46 2017 -0700
Added human_readability function to e.g. display 1 cup rather than 16 tablespoons
src/gr-convert-units.c | 107 +++++++++++++++++++++++++++++++++++++++++++
src/gr-convert-units.h | 2 +
src/gr-ingredients-viewer.c | 2 +
3 files changed, 111 insertions(+), 0 deletions(-)
---
diff --git a/src/gr-convert-units.c b/src/gr-convert-units.c
index b6cee9a..6173850 100644
--- a/src/gr-convert-units.c
+++ b/src/gr-convert-units.c
@@ -322,4 +322,111 @@ gr_convert_weight (double *amount, GrUnit *unit, GrPreferredUnit user_weight_uni
}
*amount = amount1;
*unit = unit1;
+}
+
+void
+gr_convert_human_readable (double *amount, GrUnit *unit)
+{
+ double amount1 = *amount;
+ GrUnit unit1 = *unit;
+
+ gboolean unit_changed = TRUE;
+
+ while(unit_changed) {
+ switch (unit1) {
+ case GR_UNIT_GRAM:
+ if (amount1 >= 1000) {
+ amount1 = (amount1 / 1000);
+ unit1 = GR_UNIT_KILOGRAM;
+ }
+ break;
+
+ case GR_UNIT_KILOGRAM:
+ if (amount1 < 1) {
+ amount1 = (amount1 * 1000);
+ unit1 = GR_UNIT_GRAM;
+ }
+ break;
+
+ case GR_UNIT_POUND:
+ if (amount1 < 1) {
+ amount1 = (amount1 * 16);
+ unit1 = GR_UNIT_OUNCE;
+ }
+ break;
+
+ case GR_UNIT_OUNCE:
+ if (amount1 >= 16) {
+ amount1 = (amount1 / 16);
+ unit1 = GR_UNIT_POUND;
+ }
+ break;
+
+ case GR_UNIT_TEASPOON:
+ if (amount1 >= 3) {
+ amount1 = (amount1 / 3);
+ unit1 = GR_UNIT_TABLESPOON;
+ }
+ break;
+
+ case GR_UNIT_TABLESPOON:
+ if (amount1 >= 16) {
+ amount1 = (amount1 / 16);
+ unit1 = GR_UNIT_CUP;
+ }
+
+ else if ((amount1 < 1) && (amount1 > 0)) {
+ amount1 = (amount1 * 3);
+ unit1 = GR_UNIT_TEASPOON;
+ }
+ break;
+
+ case GR_UNIT_CUP:
+ if (amount1 >= 4) {
+ amount1 = (amount1 / 4);
+ unit1 = GR_UNIT_QUART;
+ }
+
+ else if (amount1 < 1) {
+ amount1 = amount1 / 16;
+ unit1 = GR_UNIT_TABLESPOON;
+ }
+ break;
+
+ case GR_UNIT_MILLILITER:
+ if (amount1 >= 1000) {
+ amount1 = amount1 / 1000;
+ unit1 = GR_UNIT_LITER;
+ }
+ break;
+
+ case GR_UNIT_DECILITER:
+ if (amount1 < 1) {
+ amount1 = amount1 * 100;
+ unit1 = GR_UNIT_MILLILITER;
+ }
+ else if (amount1 >= 10) {
+ amount1 = amount1 / 10;
+ unit1 = GR_UNIT_LITER;
+ }
+ break;
+
+ case GR_UNIT_LITER:
+ if (amount1 < 1) {
+ amount1 = amount1 * 1000;
+ unit1 = GR_UNIT_MILLILITER;
+ }
+ break;
+
+ default:
+ ;
+ }
+
+ if (*unit == unit1) {
+ unit_changed = FALSE;
+ }
+
+ *amount = amount1;
+ *unit = unit1;
+ }
}
\ No newline at end of file
diff --git a/src/gr-convert-units.h b/src/gr-convert-units.h
index fd31408..f817063 100644
--- a/src/gr-convert-units.h
+++ b/src/gr-convert-units.h
@@ -46,5 +46,7 @@ GrPreferredUnit gr_convert_get_weight_unit (void);
void gr_convert_temp (int *num, int *unit, int user_unit);
void gr_convert_volume (double *amount, GrUnit *unit, GrPreferredUnit
user_volume_unit);
void gr_convert_weight (double *amount, GrUnit *unit, GrPreferredUnit
user_weight_unit);
+void gr_convert_human_readable (double *amount, GrUnit *unit);
+
G_END_DECLS
\ No newline at end of file
diff --git a/src/gr-ingredients-viewer.c b/src/gr-ingredients-viewer.c
index 84de874..cec050d 100644
--- a/src/gr-ingredients-viewer.c
+++ b/src/gr-ingredients-viewer.c
@@ -342,6 +342,8 @@ gr_ingredients_viewer_set_ingredients (GrIngredientsViewer *viewer,
}
}
+ gr_convert_human_readable(&amount, &unit);
+
char *a_final = gr_number_format(amount);
const char *u_final = gr_unit_get_name(unit);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]