ttutil.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /* -*- mode: c++; c-basic-offset: 4 -*- */
  2. /*
  3. * Modified for use within matplotlib
  4. * 5 July 2007
  5. * Michael Droettboom
  6. */
  7. /* Very simple interface to the ppr TT routines */
  8. /* (c) Frank Siegert 1996 */
  9. #include <cstdio>
  10. #include <cstdarg>
  11. #include <cstdlib>
  12. #include "pprdrv.h"
  13. #define PRINTF_BUFFER_SIZE 512
  14. void TTStreamWriter::printf(const char* format, ...)
  15. {
  16. va_list arg_list;
  17. va_start(arg_list, format);
  18. char buffer[PRINTF_BUFFER_SIZE];
  19. #if defined(WIN32) || defined(_MSC_VER)
  20. int size = _vsnprintf(buffer, PRINTF_BUFFER_SIZE, format, arg_list);
  21. #else
  22. int size = vsnprintf(buffer, PRINTF_BUFFER_SIZE, format, arg_list);
  23. #endif
  24. if (size >= PRINTF_BUFFER_SIZE) {
  25. char* buffer2 = (char*)malloc(size);
  26. #if defined(WIN32) || defined(_MSC_VER)
  27. _vsnprintf(buffer2, size, format, arg_list);
  28. #else
  29. vsnprintf(buffer2, size, format, arg_list);
  30. #endif
  31. this->write(buffer2);
  32. free(buffer2);
  33. } else {
  34. this->write(buffer);
  35. }
  36. va_end(arg_list);
  37. }
  38. void TTStreamWriter::put_char(int val)
  39. {
  40. char c[2];
  41. c[0] = (char)val;
  42. c[1] = 0;
  43. this->write(c);
  44. }
  45. void TTStreamWriter::puts(const char *a)
  46. {
  47. this->write(a);
  48. }
  49. void TTStreamWriter::putline(const char *a)
  50. {
  51. this->write(a);
  52. this->write("\n");
  53. }
  54. void replace_newlines_with_spaces(char *a) {
  55. char* i = a;
  56. while (*i != 0) {
  57. if (*i == '\r' || *i == '\n')
  58. *i = ' ';
  59. i++;
  60. }
  61. }