open_toontown_panda3d/pandatool/src/palettizer/pal_string_utils.cxx

88 lines
2.3 KiB
C++

// Filename: pal_string_utils.cxx
// Created by: drose (30Nov00)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University. All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license. You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
#include "pal_string_utils.h"
#include "pnmFileType.h"
#include "pnmFileTypeRegistry.h"
// Extracts the first word of the string into param, and the remainder
// of the line into value.
void
extract_param_value(const string &str, string &param, string &value) {
size_t i = 0;
// First, skip all whitespace at the beginning.
while (i < str.length() && isspace(str[i])) {
i++;
}
size_t start = i;
// Now skip to the end of the whitespace.
while (i < str.length() && !isspace(str[i])) {
i++;
}
size_t end = i;
param = str.substr(start, end - start);
// Skip a little bit further to the start of the value.
while (i < str.length() && isspace(str[i])) {
i++;
}
value = trim_right(str.substr(i));
}
bool
parse_image_type_request(const string &word, PNMFileType *&color_type,
PNMFileType *&alpha_type) {
PNMFileTypeRegistry *registry = PNMFileTypeRegistry::get_global_ptr();
color_type = (PNMFileType *)NULL;
alpha_type = (PNMFileType *)NULL;
string color_name = word;
string alpha_name;
size_t comma = word.find(',');
if (comma != string::npos) {
// If we have a comma in the image_type, it's two types: a color
// type and an alpha type.
color_name = word.substr(0, comma);
alpha_name = word.substr(comma + 1);
}
if (!color_name.empty()) {
color_type = registry->get_type_from_extension(color_name);
if (color_type == (PNMFileType *)NULL) {
nout << "Image file type '" << color_name << "' is unknown.\n";
return false;
}
}
if (!alpha_name.empty()) {
alpha_type = registry->get_type_from_extension(alpha_name);
if (alpha_type == (PNMFileType *)NULL) {
nout << "Image file type '" << alpha_name << "' is unknown.\n";
return false;
}
}
return true;
}