File indexing completed on 2024-05-12 05:55:26

0001 /*
0002     This file is part of the Okteta Core library, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2007 Friedrich W. H. Kossebau <kossebau@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #include "fill.hpp"
0010 
0011 //
0012 #include <abstractbytearraymodel.hpp>
0013 // Qt
0014 #include <QByteArray>
0015 
0016 using namespace Okteta;
0017 
0018 // fills the buffer with char from b to e
0019 void textureByteArrayModel(AbstractByteArrayModel* byteArrayModel,
0020                            unsigned char b, unsigned char e,
0021                            unsigned int From, int To)
0022 {
0023     const Size size = byteArrayModel->size();
0024 
0025     // check
0026     if (To == -1 || To >= size) {
0027         To = size - 1;
0028     }
0029     if (b > e) {
0030         b = e;
0031     }
0032 
0033     // do
0034     unsigned char c = b;
0035     for (int i = From; i <= To; ++i) {
0036         byteArrayModel->setByte(i, c);
0037         if (c == e) {
0038             c = b;
0039         } else {
0040             c++;
0041         }
0042     }
0043 }
0044 
0045 void textureByteArrayModel(AbstractByteArrayModel* byteArrayModel,
0046                            unsigned char b, unsigned char e,
0047                            const AddressRange& range)
0048 {
0049     textureByteArrayModel(byteArrayModel, b, e, range.start(), range.end());
0050 }
0051 
0052 void textureByteArray(QByteArray* byteArray,
0053                       unsigned char b, unsigned char e,
0054                       unsigned int From, int To)
0055 {
0056     const int size = byteArray->size();
0057 
0058     // check
0059     if (To == -1 || To >= size) {
0060         To = size - 1;
0061     }
0062     if (b > e) {
0063         b = e;
0064     }
0065 
0066     // do
0067     unsigned char c = b;
0068     for (int i = From; i <= To; ++i) {
0069         (*byteArray)[i] = c;
0070         if (c == e) {
0071             c = b;
0072         } else {
0073             c++;
0074         }
0075     }
0076 }
0077 
0078 void textureByteArray(QByteArray* byteArray,
0079                       unsigned char b, unsigned char e,
0080                       const AddressRange& range)
0081 {
0082     textureByteArray(byteArray, b, e, range.start(), range.end());
0083 }
0084 
0085 /*
0086 static void list(AbstractByteArrayModel* byteArrayModel, const char* Name)
0087 {
0088    unsigned int size = byteArrayModel->size();
0089    for (unsigned int i=0; i<size; ++i) {
0090         kdDebug() << Name<<":"<<i<<":"<<byteArrayModel->datum(i) << endl;
0091    }
0092 }
0093 */