Blob Blame Raw
#ifndef GRAPH_H
#define GRAPH_H


#include "common.h"

#include "X11/Xft/Xft.h"



typedef enum {
  GC_WINDOW,
  GC_BUTTON_INACTIVE,
  GC_BUTTON_HIGHTLIGHT,
  GC_BUTTON_ACTIVE,
  GC_BUTTON_ACTIVE2,
  GC_TEXT_HIGHTLIGHT,
  GC_TEXT_INACTIVE,
  GC_TEXT_ACTIVE,
  GC_TEXT_ACTIVE2 } GraphStyle;
enum {
  GC_COUNT = GC_TEXT_ACTIVE2 + 1 };


typedef struct Graph {
  App *app;
  XftDraw *draw;
  XftFont *fonts[FONT_MAX_SIZES];
  int fontsCnt;
  XftColor colors[GC_COUNT];
} Graph;


typedef struct TextLayoutSize {
  int x, y, w, h;
} TextLayoutSize;


typedef struct TextLayout {
  Graph *g;
  int len;
  const char *text;
  TextLayoutSize sizes[FONT_MAX_SIZES];
} TextLayout;




int graphInit(Graph *g, App *app);
void graphDeinit(Graph *g);
void graphResize(Graph *g);
void graphDrawBackgound(Graph *g, int x, int y, int w, int h);
void graphDrawButton(Graph *g, int x, int y, int w, int h, int active, int highlight);

void textLayoutInit(TextLayout *tl, Graph *g, const char *text);
void textLayoutDeinit(TextLayout *tl);
void textLayoutDraw(TextLayout *tl, int x, int y, int w, int h, int active, int highlight);


#endif