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" 97d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/strings/string16.h" 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/base/ui_base_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" 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)UI_BASE_EXPORT base::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" 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)UI_BASE_EXPORT base::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. 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)UI_BASE_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" 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)UI_BASE_EXPORT base::string16 FormatBytesWithUnits(int64 bytes, 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DataUnits units, 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool show_units); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// As above, but with "/s" units for speed values. 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Ex: FormatSpeed(512, DATA_UNITS_KIBIBYTE, true) => "0.5 kB/s" 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Ex: FormatSpeed(10*1024, DATA_UNITS_MEBIBYTE, false) => "0.1" 53a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)base::string16 FormatSpeedWithUnits(int64 bytes, 54a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) DataUnits units, 55a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool show_units); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ui 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // UI_BASE_TEXT_BYTES_FORMATTING_H_ 60