diff options
Diffstat (limited to 'src/PSEditModel.cxx')
-rw-r--r-- | src/PSEditModel.cxx | 390 |
1 files changed, 195 insertions, 195 deletions
diff --git a/src/PSEditModel.cxx b/src/PSEditModel.cxx index 605c0dc..6b4de41 100644 --- a/src/PSEditModel.cxx +++ b/src/PSEditModel.cxx @@ -16,281 +16,281 @@ PSEditModel::PSEditModel() { - max_pages = 32; - page = 0; - text = (PSEditText**) malloc(sizeof(PSEditText*) * max_pages); - if (!text) { - perror("malloc"); - exit(1); - } - for (int i = 0; i < max_pages; i++) { - text[i] = NULL; - } - - cur_text = NULL; + max_pages = 32; + page = 0; + text = (PSEditText**) malloc(sizeof(PSEditText*) * max_pages); + if (!text) { + perror("malloc"); + exit(1); + } + for (int i = 0; i < max_pages; i++) { + text[i] = NULL; + } + + cur_text = NULL; } void PSEditModel::set_page(int p) { - int old_max_pages; + int old_max_pages; - if (p >= max_pages) { - old_max_pages = max_pages; + if (p >= max_pages) { + old_max_pages = max_pages; - max_pages = p + max_pages; - text = (PSEditText**) realloc(text, sizeof(PSEditText*) * max_pages); - if (!text) { - perror("realloc"); - exit(1); - } + max_pages = p + max_pages; + text = (PSEditText**) realloc(text, sizeof(PSEditText*) * max_pages); + if (!text) { + perror("realloc"); + exit(1); + } - for (int i = old_max_pages; i < max_pages; i++) { - text[i] = NULL; - } - } + for (int i = old_max_pages; i < max_pages; i++) { + text[i] = NULL; + } + } - page = p; - cur_text = NULL; + page = p; + cur_text = NULL; } void PSEditModel::clear() { - cur_text = NULL; - for (int i = 0; i < max_pages; i++) { - if (text[i]) { - delete(text[i]); - text[i] = NULL; - } - } + cur_text = NULL; + for (int i = 0; i < max_pages; i++) { + if (text[i]) { + delete(text[i]); + text[i] = NULL; + } + } } void PSEditModel::new_text(int x1, int y1, const char *s, - int size, int p, PSEditColor *c) { - set_page(p); - - cur_text = new PSEditText(x1, y1, s, size, c); - if (text[p]) { - text[p]->append(cur_text); - } else { - text[p] = cur_text; - } + int size, int p, PSEditColor *c) { + set_page(p); + + cur_text = new PSEditText(x1, y1, s, size, c); + if (text[p]) { + text[p]->append(cur_text); + } else { + text[p] = cur_text; + } } int PSEditModel::set_cur_text(int x1, int y1, int p) { - PSEditText *t; - - if (p < 0 || p >= max_pages) { - return 1; - } - - if (text[p]) { - t = text[p]->get_match(x1, y1); - if (t) { - cur_text = t; - return 0; - } - } - return 1; + PSEditText *t; + + if (p < 0 || p >= max_pages) { + return 1; + } + + if (text[p]) { + t = text[p]->get_match(x1, y1); + if (t) { + cur_text = t; + return 0; + } + } + return 1; } int PSEditModel::next_text(int p) { - if (p < 0 || p >= max_pages) { - return 1; - } - - if (cur_text) { - cur_text = cur_text->get_next(); - } - - if (cur_text) { - return 0; - } else if (text[p]) { - cur_text = text[p]; - return 0; - } else { - return 1; - } + if (p < 0 || p >= max_pages) { + return 1; + } + + if (cur_text) { + cur_text = cur_text->get_next(); + } + + if (cur_text) { + return 0; + } else if (text[p]) { + cur_text = text[p]; + return 0; + } else { + return 1; + } } int PSEditModel::is_cur_text(PSEditText *t) { - return (t && t == cur_text); + return (t && t == cur_text); } PSEditText *PSEditModel::get_cur_text() { - return cur_text; + return cur_text; } void PSEditModel::append_text(const char *s) { - if (cur_text && s) { - cur_text->append_text(s); - } + if (cur_text && s) { + cur_text->append_text(s); + } } void PSEditModel::move(int x1, int y1) { - if (cur_text) { - cur_text->move(x1, y1); - } + if (cur_text) { + cur_text->move(x1, y1); + } } void PSEditModel::rm_char() { - if (cur_text) { - cur_text->rm_char(); - } + if (cur_text) { + cur_text->rm_char(); + } } void PSEditModel::set_size(int s) { - if (cur_text) { - cur_text->size = s; - } + if (cur_text) { + cur_text->size = s; + } } int PSEditModel::get_size() { - if (cur_text) { - return cur_text->size; - } else { - return -1; - } + if (cur_text) { + return cur_text->size; + } else { + return -1; + } } void PSEditModel::set_color(PSEditColor *c) { - if (cur_text) { - cur_text->text_color.set(c->r, c->g, c->b); - } + if (cur_text) { + cur_text->text_color.set(c->r, c->g, c->b); + } } int PSEditModel::get_color(PSEditColor *c) { - if (cur_text) { - c->set(cur_text->text_color.r, - cur_text->text_color.g, - cur_text->text_color.b); - return 0; - } else { - return -1; - } + if (cur_text) { + c->set(cur_text->text_color.r, + cur_text->text_color.g, + cur_text->text_color.b); + return 0; + } else { + return -1; + } } int PSEditModel::get_max_pages() { - return max_pages; + return max_pages; } int PSEditModel::set_tag(const char *t) { - if (cur_text) { - return cur_text->set_tag(t); - } else { - return 1; - } + if (cur_text) { + return cur_text->set_tag(t); + } else { + return 1; + } } char *PSEditModel::get_tag() { - if (cur_text) { - return cur_text->get_tag(); - } else { - return NULL; - } + if (cur_text) { + return cur_text->get_tag(); + } else { + return NULL; + } } int PSEditModel::replace_tag(char *tag, char *txt) { - PSEditText *t; - int p, ret = 0; - - for (p = 0; p < max_pages; p++) { - t = get_text(p); - while (t) { - if (t->get_tag() && strcmp(t->get_tag(), tag) == 0) { - t->set_text(txt); - ret++; - } - t = t->get_next(); - } - } - - return ret; + PSEditText *t; + int p, ret = 0; + + for (p = 0; p < max_pages; p++) { + t = get_text(p); + while (t) { + if (t->get_tag() && strcmp(t->get_tag(), tag) == 0) { + t->set_text(txt); + ret++; + } + t = t->get_next(); + } + } + + return ret; } int PSEditModel::dump_tags() { - PSEditText *t; - int p, ret = 0; - - for (p = 0; p < max_pages; p++) { - t = get_text(p); - while (t) { - if (t->get_tag()) { - printf("%s=%s\n", t->get_tag(), t->get_text()); - ret++; - } - t = t->get_next(); - } - } - - return ret; + PSEditText *t; + int p, ret = 0; + + for (p = 0; p < max_pages; p++) { + t = get_text(p); + while (t) { + if (t->get_tag()) { + printf("%s=%s\n", t->get_tag(), t->get_text()); + ret++; + } + t = t->get_next(); + } + } + + return ret; } PSEditText *PSEditModel::get_text(int p) { - if (p >= max_pages) { - return 0; - } else { - return text[p]; - } + if (p >= max_pages) { + return 0; + } else { + return text[p]; + } } int PSEditModel::load(FILE *fp) { - char tmpname[256]; - char linebuf[1024]; - ssize_t ret; - PSParser *p2 = new PSParser_2(this); - int tmp_fd; - - strncpy(tmpname, "/tmp/PSEditorXXXXXX", sizeof(tmpname)); - tmp_fd = mkstemp(tmpname); - if (tmp_fd < 0) { - fprintf(stderr, "Could not create temporary file (errno %d).\n", errno); - return -1; - } - unlink(tmpname); - - clear(); - - while (fgets(linebuf, sizeof(linebuf), fp) != NULL) { - if (!p2->parse(linebuf)) { - ret = write(tmp_fd, linebuf, strlen(linebuf)); - if (ret != strlen(linebuf)) { - fprintf(stderr, "Error while writing to temporary file\n"); - } - } - } - - lseek(tmp_fd, 0L, SEEK_SET); - - delete(p2); - - return tmp_fd; + char tmpname[256]; + char linebuf[1024]; + ssize_t ret; + PSParser *p2 = new PSParser_2(this); + int tmp_fd; + + strncpy(tmpname, "/tmp/PSEditorXXXXXX", sizeof(tmpname)); + tmp_fd = mkstemp(tmpname); + if (tmp_fd < 0) { + fprintf(stderr, "Could not create temporary file (errno %d).\n", errno); + return -1; + } + unlink(tmpname); + + clear(); + + while (fgets(linebuf, sizeof(linebuf), fp) != NULL) { + if (!p2->parse(linebuf)) { + ret = write(tmp_fd, linebuf, strlen(linebuf)); + if (ret != strlen(linebuf)) { + fprintf(stderr, "Error while writing to temporary file\n"); + } + } + } + + lseek(tmp_fd, 0L, SEEK_SET); + + delete(p2); + + return tmp_fd; } int PSEditModel::save(FILE *sfp, int tmp_fd) { - off_t pos = lseek(tmp_fd, 0, SEEK_CUR); // save current position + off_t pos = lseek(tmp_fd, 0, SEEK_CUR); // save current position - if (pos == -1) { - perror("lseek"); - return 1; - } + if (pos == -1) { + perror("lseek"); + return 1; + } - FILE *fp = fdopen(tmp_fd, "r"); + FILE *fp = fdopen(tmp_fd, "r"); - rewind(fp); + rewind(fp); - PSWriter *pw; - - pw = new PSLevel1Writer(this); - - pw->write(fp, sfp); + PSWriter *pw; - delete(pw); - - lseek(tmp_fd, pos, SEEK_SET); // restore current position + pw = new PSLevel1Writer(this); - return 0; + pw->write(fp, sfp); + + delete(pw); + + lseek(tmp_fd, pos, SEEK_SET); // restore current position + + return 0; } |