bytes_formatting.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef UI_BASE_TEXT_BYTES_FORMATTING_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define UI_BASE_TEXT_BYTES_FORMATTING_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/string16.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/ui_export.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ui { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Simple API ------------------------------------------------------------------ 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Simple call to return a byte quantity as a string in human-readable format. 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Ex: FormatBytes(512) => "512 B" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Ex: FormatBytes(101479) => "99.1 kB" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)UI_EXPORT string16 FormatBytes(int64 bytes); 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Simple call to return a speed as a string in human-readable format. 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Ex: FormatSpeed(512) => "512 B/s" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Ex: FormatSpeed(101479) => "99.1 kB/s" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)UI_EXPORT string16 FormatSpeed(int64 bytes); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Less-Simple API ------------------------------------------------------------- 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum DataUnits { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DATA_UNITS_BYTE = 0, 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DATA_UNITS_KIBIBYTE, 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DATA_UNITS_MEBIBYTE, 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DATA_UNITS_GIBIBYTE, 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DATA_UNITS_TEBIBYTE, 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DATA_UNITS_PEBIBYTE 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Return the unit type that is appropriate for displaying the amount of bytes 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// passed in. Most of the time, an explicit call to this isn't necessary; just 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// use FormatBytes()/FormatSpeed() above. 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)UI_EXPORT DataUnits GetByteDisplayUnits(int64 bytes); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Return a byte quantity as a string in human-readable format with an optional 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// unit suffix. Specify in the |units| argument the units to be used. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Ex: FormatBytes(512, DATA_UNITS_KIBIBYTE, true) => "0.5 kB" 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Ex: FormatBytes(10*1024, DATA_UNITS_MEBIBYTE, false) => "0.1" 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)UI_EXPORT string16 FormatBytesWithUnits(int64 bytes, DataUnits units, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool show_units); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// As above, but with "/s" units for speed values. 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Ex: FormatSpeed(512, DATA_UNITS_KIBIBYTE, true) => "0.5 kB/s" 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Ex: FormatSpeed(10*1024, DATA_UNITS_MEBIBYTE, false) => "0.1" 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)string16 FormatSpeedWithUnits(int64 bytes, DataUnits units, bool show_units); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ui 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // UI_BASE_TEXT_BYTES_FORMATTING_H_ 57