OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [MW_0_8_9PRE7/] [mw/] [src/] [demos/] [nanox/] [ftdemo.c] - Diff between revs 674 and 1765

Only display areas with differences | Details | Blame | View Log

Rev 674 Rev 1765
/*
/*
 * Demonstration program for freetype truetype font support
 * Demonstration program for freetype truetype font support
 * Martin Jolicoeur 2000 martinj@visuaide.com.
 * Martin Jolicoeur 2000 martinj@visuaide.com.
 */
 */
#include <stdio.h>
#include <stdio.h>
#define MWINCLUDECOLORS
#define MWINCLUDECOLORS
#include "nano-X.h"
#include "nano-X.h"
 
 
#if HAVE_T1LIB_SUPPORT
#if HAVE_T1LIB_SUPPORT
#define FONTNAME "bchr"
#define FONTNAME "bchr"
#if 0
#if 0
#define FONTNAME "bchb"
#define FONTNAME "bchb"
#define FONTNAME "dcr10"
#define FONTNAME "dcr10"
#define FONTNAME "dcbx10"
#define FONTNAME "dcbx10"
#endif
#endif
#elif HAVE_FREETYPE_SUPPORT
#elif HAVE_FREETYPE_SUPPORT
#define FONTNAME "lt1-r-omega-serif"
#define FONTNAME "lt1-r-omega-serif"
#if 0
#if 0
#define FONTNAME "times"
#define FONTNAME "times"
#define FONTNAME "cour"
#define FONTNAME "cour"
#endif
#endif
#else
#else
#define FONTNAME GR_FONT_SYSTEM_VAR
#define FONTNAME GR_FONT_SYSTEM_VAR
#endif
#endif
 
 
#define MAXW 400
#define MAXW 400
#define MAXH 400
#define MAXH 400
 
 
GR_GC_ID gid;
GR_GC_ID gid;
GR_FONT_ID fontid, fontid2;
GR_FONT_ID fontid, fontid2;
GR_BOOL kerning = GR_FALSE;
GR_BOOL kerning = GR_FALSE;
GR_BOOL aa = GR_TRUE;
GR_BOOL aa = GR_TRUE;
GR_BOOL underline = GR_FALSE;
GR_BOOL underline = GR_FALSE;
int angle = 0;
int angle = 0;
int state = GR_TFBOTTOM;
int state = GR_TFBOTTOM;
char buffer[128];
char buffer[128];
int n;
int n;
void Render(GR_WINDOW_ID window);
void Render(GR_WINDOW_ID window);
 
 
int
int
main()
main()
{
{
  FILE *file;
  FILE *file;
  GR_EVENT event;
  GR_EVENT event;
  GR_WINDOW_ID window;
  GR_WINDOW_ID window;
 
 
  if (GrOpen() < 0) {
  if (GrOpen() < 0) {
        fprintf(stderr, "cannot open graphics\n");
        fprintf(stderr, "cannot open graphics\n");
        exit(1);
        exit(1);
  }
  }
 
 
  window = GrNewWindow(GR_ROOT_WINDOW_ID, 50,50, MAXW,MAXH, 4, BLACK, WHITE);
  window = GrNewWindow(GR_ROOT_WINDOW_ID, 50,50, MAXW,MAXH, 4, BLACK, WHITE);
  GrMapWindow(window);
  GrMapWindow(window);
 
 
  gid = GrNewGC ();
  gid = GrNewGC ();
  GrSelectEvents(window, GR_EVENT_MASK_KEY_DOWN |
  GrSelectEvents(window, GR_EVENT_MASK_KEY_DOWN |
                GR_EVENT_MASK_CLOSE_REQ | GR_EVENT_MASK_EXPOSURE);
                GR_EVENT_MASK_CLOSE_REQ | GR_EVENT_MASK_EXPOSURE);
 
 
  if ((file = fopen("ftdemo.txt", "r")) == NULL) {
  if ((file = fopen("ftdemo.txt", "r")) == NULL) {
        printf("Can't open text file\n");
        printf("Can't open text file\n");
        return (-1);
        return (-1);
  }
  }
 
 
  n = 0;
  n = 0;
 
 
  if(fgets(buffer, 128, file) != NULL) {
  if(fgets(buffer, 128, file) != NULL) {
        for (n = 0; n < 128 && buffer[n]; n++) {
        for (n = 0; n < 128 && buffer[n]; n++) {
                if (buffer[n] == '\n')
                if (buffer[n] == '\n')
                        break;
                        break;
        }
        }
  }
  }
  fclose(file);
  fclose(file);
 
 
  fontid = GrCreateFont(FONTNAME, 20, NULL);
  fontid = GrCreateFont(FONTNAME, 20, NULL);
  fontid2 = GrCreateFont(FONTNAME, 36, NULL);
  fontid2 = GrCreateFont(FONTNAME, 36, NULL);
 
 
  Render(window);
  Render(window);
 
 
  while (1) {
  while (1) {
    GrGetNextEvent(&event);
    GrGetNextEvent(&event);
 
 
    switch (event.type) {
    switch (event.type) {
    case GR_EVENT_TYPE_KEY_DOWN:
    case GR_EVENT_TYPE_KEY_DOWN:
      switch(event.keystroke.ch) {
      switch(event.keystroke.ch) {
        case 171: /* + */
        case 171: /* + */
        case '+':
        case '+':
        case '=':
        case '=':
          angle += 100; /* Increase 10 degrees */
          angle += 100; /* Increase 10 degrees */
          angle %= 3600;
          angle %= 3600;
          break;
          break;
        case 173: /* - */
        case 173: /* - */
        case '-':
        case '-':
        case '_':
        case '_':
          angle -= 100; /* Decrease 10 degrees */
          angle -= 100; /* Decrease 10 degrees */
          angle %= 3600;
          angle %= 3600;
          break;
          break;
        case 'a':
        case 'a':
          aa = (aa == GR_FALSE)?GR_TRUE:GR_FALSE;
          aa = (aa == GR_FALSE)?GR_TRUE:GR_FALSE;
          break;
          break;
        case 'k':
        case 'k':
          kerning = (kerning == GR_FALSE)?GR_TRUE:GR_FALSE;
          kerning = (kerning == GR_FALSE)?GR_TRUE:GR_FALSE;
          break;
          break;
        case 'l':
        case 'l':
          state = (state == GR_TFBOTTOM)?GR_TFBASELINE: \
          state = (state == GR_TFBOTTOM)?GR_TFBASELINE: \
                  (state == GR_TFBASELINE)?GR_TFTOP:GR_TFBOTTOM;
                  (state == GR_TFBASELINE)?GR_TFTOP:GR_TFBOTTOM;
          break;
          break;
        case 'u':
        case 'u':
          underline = underline? GR_FALSE: GR_TRUE;
          underline = underline? GR_FALSE: GR_TRUE;
          break;
          break;
        default:
        default:
          continue;
          continue;
          /* Unknown keystroke */
          /* Unknown keystroke */
      }
      }
      Render(window);
      Render(window);
      break;
      break;
    case GR_EVENT_TYPE_EXPOSURE:
    case GR_EVENT_TYPE_EXPOSURE:
      Render(window);
      Render(window);
      break;
      break;
    case GR_EVENT_TYPE_CLOSE_REQ:
    case GR_EVENT_TYPE_CLOSE_REQ:
      GrClose();
      GrClose();
      exit(0);
      exit(0);
    }
    }
  }
  }
 
 
  return 0;
  return 0;
}
}
 
 
void Render(GR_WINDOW_ID window)
void Render(GR_WINDOW_ID window)
{
{
   GrSetGCBackground(gid, WHITE);
   GrSetGCBackground(gid, WHITE);
   GrSetGCForeground (gid, WHITE);
   GrSetGCForeground (gid, WHITE);
   GrSetGCUseBackground(gid, GR_FALSE);
   GrSetGCUseBackground(gid, GR_FALSE);
   GrFillRect(window, gid, 0, 0, MAXW, MAXH);
   GrFillRect(window, gid, 0, 0, MAXW, MAXH);
   GrSetGCForeground (gid, BLACK);
   GrSetGCForeground (gid, BLACK);
 
 
   /* Draw menu */
   /* Draw menu */
   GrSetGCFont(gid, fontid);
   GrSetGCFont(gid, fontid);
   GrSetFontAttr(fontid, GR_TFKERNING | GR_TFANTIALIAS, 0);
   GrSetFontAttr(fontid, GR_TFKERNING | GR_TFANTIALIAS, 0);
   GrText(window, gid, 5, 20, "+ Rotate string clockwise", 25, GR_TFASCII);
   GrText(window, gid, 5, 20, "+ Rotate string clockwise", 25, GR_TFASCII);
   GrText(window, gid, 5, 40, "-  Rotate string counter-clockwise", 34, GR_TFASCII);
   GrText(window, gid, 5, 40, "-  Rotate string counter-clockwise", 34, GR_TFASCII);
   GrText(window, gid, 5, 60, "a Toggle anti-aliasing", 22, GR_TFASCII);
   GrText(window, gid, 5, 60, "a Toggle anti-aliasing", 22, GR_TFASCII);
   GrText(window, gid, 5, 80, "k Toggle kerning", 16, GR_TFASCII);
   GrText(window, gid, 5, 80, "k Toggle kerning", 16, GR_TFASCII);
   GrText(window, gid, 5, 100, "u Toggle underline", 18, GR_TFASCII);
   GrText(window, gid, 5, 100, "u Toggle underline", 18, GR_TFASCII);
   GrText(window, gid, 5, 120, "l  Toggle alignment bottom/baseline/top", 39, GR_TFASCII);
   GrText(window, gid, 5, 120, "l  Toggle alignment bottom/baseline/top", 39, GR_TFASCII);
 
 
   /* Draw test string */
   /* Draw test string */
   GrSetGCFont(gid, fontid2);
   GrSetGCFont(gid, fontid2);
   GrSetFontAttr(fontid2, (kerning?GR_TFKERNING:0) | (aa?GR_TFANTIALIAS:0) |
   GrSetFontAttr(fontid2, (kerning?GR_TFKERNING:0) | (aa?GR_TFANTIALIAS:0) |
        (underline?GR_TFUNDERLINE: 0), -1);
        (underline?GR_TFUNDERLINE: 0), -1);
   GrSetFontRotation(fontid2, angle);
   GrSetFontRotation(fontid2, angle);
   GrText(window, gid, MAXW/2, MAXH/2, buffer, n, state|GR_TFUTF8);
   GrText(window, gid, MAXW/2, MAXH/2, buffer, n, state|GR_TFUTF8);
 
 
   /* Draw arrow */
   /* Draw arrow */
   GrLine (window, gid, (MAXW/2)-10 , MAXH/2, (MAXW/2)+10, MAXH/2);
   GrLine (window, gid, (MAXW/2)-10 , MAXH/2, (MAXW/2)+10, MAXH/2);
   GrLine (window, gid, MAXW/2, (MAXH/2)-10, MAXW/2, (MAXH/2)+10);
   GrLine (window, gid, MAXW/2, (MAXH/2)-10, MAXW/2, (MAXH/2)+10);
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.