Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[pdfium.git] / xfa / src / fxbarcode / src / BC_Utils.cpp
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4 \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #include "barcode.h"\r
8 FX_BOOL BC_FX_ByteString_Replace(CFX_ByteString &dst, FX_DWORD first, FX_DWORD last, FX_INT32 count, FX_CHAR c)\r
9 {\r
10     if (first > last || count <= 0) {\r
11         return FALSE;\r
12     }\r
13     dst.Delete(first, last - first);\r
14     for (FX_INT32 i = 0; i < count; i ++) {\r
15         dst.Insert(0, c);\r
16     }\r
17     return TRUE;\r
18 }\r
19 void BC_FX_ByteString_Append(CFX_ByteString &dst, FX_INT32 count, FX_CHAR c)\r
20 {\r
21     for (FX_INT32 i = 0; i < count; i ++) {\r
22         dst += c;\r
23     }\r
24 }\r
25 void BC_FX_ByteString_Append(CFX_ByteString &dst, const CFX_ByteArray &ba)\r
26 {\r
27     for (FX_INT32 i = 0; i < ba.GetSize(); i ++) {\r
28         dst += ba[i];\r
29     }\r
30 }\r
31 void BC_FX_PtrArray_Sort(CFX_PtrArray &src, BC_PtrArrayCompareCallback fun)\r
32 {\r
33     FX_INT32 nLength = src.GetSize();\r
34     FX_BOOL changed = true;\r
35     do {\r
36         changed = false;\r
37         for (FX_INT32 i = 0; i < nLength - 1; i++) {\r
38             if ( fun(src[i + 1], src[i]) ) {\r
39                 void *temp = src[i];\r
40                 src.SetAt(i, src[i + 1]);\r
41                 src.SetAt(i + 1, temp);\r
42                 changed = true;\r
43             }\r
44         }\r
45     } while (changed);\r
46 }\r