Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(772)

Side by Side Diff: third_party/lzma/v4_65/files/CPP/7zip/UI/Console/PercentPrinter.cpp

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // PercentPrinter.cpp
2
3 #include "StdAfx.h"
4
5 #include "Common/IntToString.h"
6 #include "Common/MyString.h"
7
8 #include "PercentPrinter.h"
9
10 const int kPaddingSize = 2;
11 const int kPercentsSize = 4;
12 const int kMaxExtraSize = kPaddingSize + 32 + kPercentsSize;
13
14 static void ClearPrev(char *p, int num)
15 {
16 int i;
17 for (i = 0; i < num; i++) *p++ = '\b';
18 for (i = 0; i < num; i++) *p++ = ' ';
19 for (i = 0; i < num; i++) *p++ = '\b';
20 *p = '\0';
21 }
22
23 void CPercentPrinter::ClosePrint()
24 {
25 if (m_NumExtraChars == 0)
26 return;
27 char s[kMaxExtraSize * 3 + 1];
28 ClearPrev(s, m_NumExtraChars);
29 (*OutStream) << s;
30 m_NumExtraChars = 0;
31 }
32
33 void CPercentPrinter::PrintString(const char *s)
34 {
35 ClosePrint();
36 (*OutStream) << s;
37 }
38
39 void CPercentPrinter::PrintString(const wchar_t *s)
40 {
41 ClosePrint();
42 (*OutStream) << s;
43 }
44
45 void CPercentPrinter::PrintNewLine()
46 {
47 ClosePrint();
48 (*OutStream) << "\n";
49 }
50
51 void CPercentPrinter::RePrintRatio()
52 {
53 char s[32];
54 ConvertUInt64ToString(((m_Total == 0) ? 0 : (m_CurValue * 100 / m_Total)), s);
55 int size = (int)strlen(s);
56 s[size++] = '%';
57 s[size] = '\0';
58
59 int extraSize = kPaddingSize + MyMax(size, kPercentsSize);
60 if (extraSize < m_NumExtraChars)
61 extraSize = m_NumExtraChars;
62
63 char fullString[kMaxExtraSize * 3];
64 char *p = fullString;
65 int i;
66 if (m_NumExtraChars == 0)
67 {
68 for (i = 0; i < extraSize; i++)
69 *p++ = ' ';
70 m_NumExtraChars = extraSize;
71 }
72
73 for (i = 0; i < m_NumExtraChars; i++)
74 *p++ = '\b';
75 m_NumExtraChars = extraSize;
76 for (; size < m_NumExtraChars; size++)
77 *p++ = ' ';
78 MyStringCopy(p, s);
79 (*OutStream) << fullString;
80 OutStream->Flush();
81 m_PrevValue = m_CurValue;
82 }
83
84 void CPercentPrinter::PrintRatio()
85 {
86 if (m_CurValue < m_PrevValue + m_MinStepSize &&
87 m_CurValue + m_MinStepSize > m_PrevValue && m_NumExtraChars != 0)
88 return;
89 RePrintRatio();
90 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698