Beispiel #1
0
/*############################## init_text() ############################*/
void
init_text(void)
{
   wpr_position = 0;
   XmTextSetString(log_output, NULL);
   XmTextSetInsertionPosition(log_output, 0);
   if (current_log_number == -1)
   {
      int  i;
      char log_file[MAX_PATH_LENGTH];

      for (i = max_log_number; i >= 0; i--)
      {
         if (p_log_file != NULL)
         {
            (void)fclose(p_log_file);
         }
         (void)sprintf(log_file, "%s/%s%d", log_dir, log_name, i);
         if ((p_log_file = fopen(log_file, "r")) == NULL)
         {
            if (errno != ENOENT)
            {
               (void)xrec(FATAL_DIALOG, "Could not fopen() %s : %s (%s %d)",
                          log_file, strerror(errno), __FILE__, __LINE__);
               return;
            }
         }
         else
         {
            read_text();
            if ((log_type_flag != TRANSFER_LOG_TYPE) &&
                (log_type_flag != RECEIVE_LOG_TYPE) &&
                (i == 0))
            {
               struct stat stat_buf;

               if (fstat(fileno(p_log_file), &stat_buf) == -1)
               {
                  (void)fprintf(stderr,
                                "ERROR   : Could not fstat() %s : %s (%s %d)\n",
                                log_file, strerror(errno), __FILE__, __LINE__);
                  exit(INCORRECT);
               }
               current_inode_no = stat_buf.st_ino;
            }
         }
      }
   }
   else
   {
      read_text();
   }
   XmTextShowPosition(log_output, wpr_position);

   return;
}
Beispiel #2
0
static BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct)
{
	HINSTANCE hInstance = lpCreateStruct->hInstance;
	hwnd_main=hwnd;
	hmenu_main=AtlLoadMenu(IDR_MENU1);
	hmenu_main=GetSubMenu(hmenu_main,0);
	config_read();
	CWindow wnd(hwnd);
	wnd.ModifyStyle(WS_CAPTION, 0);
	wnd.SetWindowPos(nullptr, 0,0, 0,0, SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_DRAWFRAME|SWP_NOACTIVATE);
	wnd.SetWindowPos(nullptr, config_x, config_y, config_w, config_h, SWP_NOACTIVATE|SWP_NOZORDER);
	systray_add(hwnd,1024,AtlLoadIcon(IDI_ICON1),app_name);
	hwnd_rich=CreateWindowEx(WS_EX_CLIENTEDGE,"RichEdit","",
		WS_CHILD|WS_VISIBLE|ES_MULTILINE|ES_AUTOVSCROLL|ES_AUTOHSCROLL|WS_HSCROLL|WS_VSCROLL,
		config_border,config_border,config_w-config_border*2,config_h-config_border*2,
		hwnd, NULL,hInstance,NULL);
	CWindow wnd_rich{hwnd_rich};
	Rich_OldWndProc = (WNDPROC) wnd_rich.GetWindowLongPtr(GWLP_WNDPROC);
	wnd_rich.SetWindowLongPtr(GWLP_WNDPROC,(LONG_PTR)Rich_WndProc);
	if (!hwnd_rich) 
	{
		wnd.MessageBox("Error creating RichEdit control","Error",MB_OK);
		return 0;
	}
	wnd_rich.SendMessage(EM_SETBKGNDCOLOR,FALSE,static_cast<LPARAM>(config_color));
	read_text();
	return 1;
}
int main(int argc, char **argv) {
        static struct gengetopt_args_info args_info;
        assert(cmdline_parser(argc, argv, &args_info) == 0);
        char* pattern = args_info.pattern_orig;
        char* text = read_text(args_info.text_arg);
        uint32_t n = strlen(text);
        uint32_t m = strlen(pattern);
        /* occ[] stores if a position is an occurrence */
        uint32_t* occ = calloc(n, sizeof(*occ));
        assert(occ != NULL);

        /* Initialize random number generator */
        gsl_rng *rng = gsl_rng_alloc(gsl_rng_mt19937);
        uint32_t num_rounds = (size_t) args_info.rounds_arg;
        for (size_t i = 0; i < num_rounds; i++) {
                uint32_t mod = random_prime(rng);
                for (size_t j = 0; j < m; j++)
                        for (size_t c = 0; c < 4; c++)
                                corrections[c] = (j == 0) ? c : (corrections[c] << 2) % mod;
                uint32_t pattern_h = init_h(pattern, m, mod);
                uint32_t pos = m;
                for (uint32_t text_h = init_h(text, m, mod); pos < n;
                     text_h = next_h(text_h, text[pos - m], text[pos], mod), pos++)
                        if (pattern_h == text_h)
                                occ[pos - m]++;
        }
        for (uint32_t pos = 0; pos < n; pos++)
                if (occ[pos] >= num_rounds) {
                        char* x = strndupa(text + pos, m);
                        printf("Occurrence %s at position %d\n", x, pos);
                }
        free(occ);
}
Beispiel #4
0
static BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct)
{
	hwnd_main=hwnd;
	hmenu_main=LoadMenu(hMainInstance,MAKEINTRESOURCE(IDR_MENU1));
	hmenu_main=GetSubMenu(hmenu_main,0);
	config_read();
	SetWindowLong(hwnd,GWL_STYLE,GetWindowLong(hwnd,GWL_STYLE)&~(WS_CAPTION));
	SetWindowPos(hwnd, 0, 0,0, 0,0, SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_DRAWFRAME|SWP_NOACTIVATE);
	SetWindowPos(hwnd, 0, config_x, config_y, config_w, config_h, SWP_NOACTIVATE|SWP_NOZORDER);
	systray_add(hwnd,1024,LoadIcon(hMainInstance,MAKEINTRESOURCE(iconRes)),app_name);
	hwnd_rich=CreateWindowEx(WS_EX_CLIENTEDGE,"RichEdit","",
		WS_CHILD|WS_VISIBLE|ES_MULTILINE|ES_AUTOVSCROLL|WS_VSCROLL,  //WS_HSCROLL|ES_AUTOHSCROLL|
		config_border,config_topborder,config_w-config_border*2,config_h-(config_border+config_topborder),
		hwnd, NULL,hMainInstance,NULL);
	Rich_OldWndProc = (WNDPROC) GetWindowLong(hwnd_rich,GWL_WNDPROC);
	SetWindowLong(hwnd_rich,GWL_WNDPROC,(int)Rich_WndProc);
	if (!hwnd_rich) 
	{
		MessageBox(hwnd,"Error creating RichEdit control","Error",MB_OK);
		return 0;
	}
	SendMessage(hwnd_rich,EM_SETBKGNDCOLOR,FALSE,config_color);
	read_text();
	return 1;
}
Beispiel #5
0
int cg_find_unified_root(char *root, size_t len)
{
	char buf[10 * PAGE_SIZE];
	char *fs, *mount, *type;
	const char delim[] = "\n\t ";

	if (read_text("/proc/self/mounts", buf, sizeof(buf)) <= 0)
		return -1;

	/*
	 * Example:
	 * cgroup /sys/fs/cgroup cgroup2 rw,seclabel,noexec,relatime 0 0
	 */
	for (fs = strtok(buf, delim); fs; fs = strtok(NULL, delim)) {
		mount = strtok(NULL, delim);
		type = strtok(NULL, delim);
		strtok(NULL, delim);
		strtok(NULL, delim);
		strtok(NULL, delim);

		if (strcmp(fs, "cgroup") == 0 &&
		    strcmp(type, "cgroup2") == 0) {
			strncpy(root, mount, len);
			return 0;
		}
	}

	return -1;
}
    void read_ant_info_record(int *bytes_read = NULL, int *sum = NULL)
    {
        for (int i = 0; i < 6; i++) {
            int device_type = read_bytes(1, bytes_read, sum);
            if (device_type < 255)  {
                QString text = read_text(20, bytes_read, sum);

                for(int i=0; i < text.length(); i++)
                {
                    if (text.at(i) == QChar(0))
                        text = text.left(i);
                }

                //while (text.endsWith( QChar(0) )) text.chop(1);

                read_bytes(1, bytes_read, sum); // flag
                uint16_t id = read_bytes(2, bytes_read, sum);
                read_bytes(2, bytes_read, sum);
                read_bytes(2, bytes_read, sum);
                QString device_type_str;
                if (device_type == 11)
                    device_type_str = "Primary Power Id";
                else if (device_type == 120)
                    device_type_str = "Chest strap Id";
                else
                    device_type_str = QString("ANT %1 Id").arg(device_type);

                deviceInfo += QString("%1 %2 %3\n").arg(device_type_str).arg(id).arg(text);
            }
        }
    }
Beispiel #7
0
int cg_read(const char *cgroup, const char *control, char *buf, size_t len)
{
	char path[PATH_MAX];

	snprintf(path, sizeof(path), "%s/%s", cgroup, control);

	if (read_text(path, buf, len) >= 0)
		return 0;

	return -1;
}
Beispiel #8
0
/*
 * On entry change
 * Signal handler for view "cursor-changed" event
 * Called from create_entry in entry.c
 * Called from rename_entry in entry.c
 */
void on_entry_change(GtkTreeView *entry_view, gpointer data)
{
	book_data *book = NULL;
	section_data *section = NULL;
	entry_data *entry = NULL;
	GtkTreeSelection *selection = NULL;
	GtkTreeModel *entry_model = NULL;
	GtkTreeIter tree_iter;

	// Get book from data
	book = (book_data*)data;
	if(book == NULL) {
		sn_warning("No current book in %s.", __func__);
		return;
	}

	// Write text of previous entry
	write_current_entry();

	// Get selected entry
	selection = gtk_tree_view_get_selection(entry_view);
	if(gtk_tree_selection_get_selected(selection, &entry_model, &tree_iter)) {
		gtk_tree_model_get(entry_model, &tree_iter, ENTRY_ITEM, &entry, END_OF_LIST);
		if(entry != NULL) {

			// Get entrys parent section
			section = entry->parent_section;

			// Set current entry in section
			sn_trace("* Selecting entry [%s/%s] in %s.",
				section->name, entry->name, __func__);

			if(section->curr_entry_path != NULL)
				gtk_tree_path_free(section->curr_entry_path);
			section->curr_entry_path = gtk_tree_model_get_path(entry_model, &tree_iter);
			section->curr_entry = entry;

			// Read text of current entry
			sn_trace("> Reading current entry [%s/%s] in %s.",
				section->name, entry->name, __func__);

			read_text(book, entry);

			// Add history
			if(book->add_history) {
				add_history();
			}
			book->add_history = FALSE;
		}
	}
	gtk_widget_grab_focus(GTK_WIDGET(entry_view));
	return;
} // On entry change
Beispiel #9
0
void add_text_to_book(char *filename,int odst)
  {
  FILE *txt;
  ENCFILE fl;

  set_font(H_FKNIHA,NOSHADOW(0));
  if (all_text == NULL) all_text = create_list(256);
  txt = enc_open(filename,&fl);
  if (txt == NULL) return;
  seek_section(txt,odst);
  read_text(txt);
  next_line(1000);
  enc_close(&fl);
  }
/*Reads informations from txt file and writes them to binary file*/
void Into_Binary(FILE *text_input, FILE *binary_output)
{
	Row table[TABLE_SIZE]; /*Table array*/
	int location=0; /*Location information in the array*/
	int read=10; /*For row control*/
	
	while(read==10){
		/*Reads maximum 10 row from text file*/
		read=read_text(text_input,&table[location]);
		/*Writes table to binary file*/
		fwrite(&table[location], sizeof(table[0]), read, binary_output);
		location+=read;
	}	
}
Beispiel #11
0
int is_swap_enabled(void)
{
	char buf[PAGE_SIZE];
	const char delim[] = "\n";
	int cnt = 0;
	char *line;

	if (read_text("/proc/swaps", buf, sizeof(buf)) <= 0)
		return -1;

	for (line = strtok(buf, delim); line; line = strtok(NULL, delim))
		cnt++;

	return cnt > 1;
}
int main (){

    std::ifstream rFile("1-string-stream.txt");
    
    std::map<std::string,int> word_count;
    
    std::set<std::string> exclude_word = {"a","an","the","The","or","of","on","On"};
    
    read_text(rFile, word_count, exclude_word);
    
    std::ofstream wFile("output.txt");
    
    display(word_count, wFile);
    
    return 0;
}
Beispiel #13
0
void assim(Store& s, char* store_fname, char* text_fname, int order){
	s.open(store_fname);
	order++;
	if (!s.is_init()){
		wcerr << "Store is not initialized, initializing..." << endl;
		s.init();
		wcerr << "Store initialized!" << endl;
	}

	string txt = read_text(text_fname);
#ifndef CHARS
	assimilate_text(txt, s, order);
#else
	assimilate_text_chars(txt, s, order);
#endif

	s.close(store_fname);

}
Beispiel #14
0
void std_input(char *title, char *text, char *txt_cancel)
{
  int x, y, w, h ;
  int button ;

  if ( stdinput == NULL ) stdinput_fix() ;

  if ( txt_cancel != NULL ) strcpy( stdinput[INPUT_CANCEL].ob_spec.free_string, txt_cancel ) ;
  write_text(stdinput, INPUT_TEXT, "") ;
  write_text(stdinput, INPUT_TITLE, title) ;
  form_center(stdinput, &x, &y, &w, &h) ;
  form_dial(0, x, y, w, h, x, y, w, h) ;
  objc_draw(stdinput, 0, 200, x, y, w, h) ;
  button = form_do(stdinput, INPUT_TEXT) ;
  deselect(stdinput, button) ;
  form_dial(3, x, y, w, h, x, y, w, h) ;
  if (button == INPUT_OK) read_text(stdinput, INPUT_TEXT, text) ;
  else                    text[0] = 0 ;
}
Beispiel #15
0
Datei: load.c Projekt: gplv2/rlib
struct rlib_report_lines * read_line(gchar **ptr) {
	struct rlib_report_lines *rl = g_malloc(sizeof(struct rlib_report_lines));
	gint32 *type;
	gpointer pointer = NULL;
	struct rlib_element *current;
	
	rl->xml_bgcolor.xml = (xmlChar *)read_xml_str(ptr);
	rl->xml_color.xml = (xmlChar *)read_xml_str(ptr);
	rl->xml_font_size.xml = (xmlChar *)read_xml_str(ptr);
	rl->xml_suppress.xml = (xmlChar *)read_xml_str(ptr);
	rl->e = NULL;

	type = (gint32 *)*ptr;
	if(*type == RLIB_FILE_LINE) {
		*ptr += sizeof(gint32);
		while(1) {
			type = (gint32 *)*ptr;
			if(*type == RLIB_FILE_LINE)
				break;
			if(*type == RLIB_ELEMENT_FIELD)
				pointer = read_field(ptr);
			if(*type == RLIB_ELEMENT_LITERAL)
				pointer = read_text(ptr);
			if(*type == RLIB_ELEMENT_FIELD || *type == RLIB_ELEMENT_LITERAL) {
				if(rl->e == NULL) {
					rl->e = g_malloc(sizeof(struct rlib_element));
					current = rl->e;
				} else {
					struct rlib_element *e;
					for(e=rl->e;e->next != NULL;e=e->next);
					e->next = g_malloc(sizeof(struct rlib_element));
					current = e->next;
				}
				current->data = pointer;
				current->type = *type;
				current->next = NULL;
			}
		}
		*ptr += sizeof(gint32);
	}
	return rl;
}
Beispiel #16
0
int main(int argc, char *argv[]) {
    Params params;
    struct timeval startTime, endTime;
    double total_time;
    long total_bytes;
    initCL(&params);
    parseCL(&params, &argc, &argv);
    validateCL(&params);
    gettimeofday(&startTime, NULL);
    if (params.buffer > 0) {
        if (strncmp(params.mode, "text", 6) == 0) {
            read_text_buffered(params.file, params.buffer);
        } else if (strncmp(params.mode, "binary", 6) == 0) {
            read_binary_buffered(params.file, params.buffer);
        } else if (strncmp(params.mode, "hdf5", 4) == 0) {
            read_hdf5_buffered(params.file, params.buffer);
        } else {
            errx(EXIT_FAILURE, "unknown mode '%s' for buffered",
                    params.mode);
        }
    } else {
        if (strncmp(params.mode, "text", 4) == 0) {
            read_text(params.file);
        } else if (strncmp(params.mode, "binary", 6) == 0) {
            read_binary(params.file);
        } else if (strncmp(params.mode, "hdf5", 4) == 0) {
            read_hdf5(params.file);
        } else {
            errx(EXIT_FAILURE, "unknown mode '%s' for unbuffered I/O",
                    params.mode);
        }
    }
    gettimeofday(&endTime, NULL);
    total_time =  endTime.tv_sec - startTime.tv_sec +
        (endTime.tv_usec - startTime.tv_usec)*1e-6;
    total_bytes = get_size(params.file);
    printf("%s\t%ld\t%d\t%.6f\n", params.file, total_bytes, params.buffer,
            total_time);
    finalizeCL(&params);
    return EXIT_SUCCESS;
}
Beispiel #17
0
std::vector<task> read_tasks(const assignment& asst, const std::string& comment) {
	namespace balg = boost::algorithm;
	std::vector<task> tasks;
	std::ostringstream ostream;
	ostream << comment << '\n';
	
	for(const auto& x : asst.point_map()) {
		ostream << x.first << ":     ;; #max = " << x.second << '\n';
	}
	std::istringstream istream{read_text(ostream.str())};
	bool valid_line;
	std::string line;
	auto enforce = [&](bool b) {
		if(!b) {
			throw std::runtime_error{"invlid line in task-configuration: " + line};
		}
	};
	while(true) {
		std::tie(valid_line, line) = next_line(istream);
		if(!valid_line) {
			break;
		}
		std::istringstream line_stream{line};
		std::string task_id;
		enforce(std::getline(line_stream, task_id, ':'));
		balg::trim_right(task_id);
		
		std::string points_str;
		enforce(std::getline(line_stream, points_str, ';'));
		balg::trim(points_str);
		auto points = std::stoul(points_str);
		
		std::string comment;
		enforce(std::getline(line_stream, comment, ';'));
		balg::trim(comment);
		
		tasks.emplace_back(task_id, points, comment);
	}
	return tasks;
}
Beispiel #18
0
int OnObjectNotifyJpeg(void *w, int obj)
{
  GEM_WINDOW      *wnd = (GEM_WINDOW *) w ;
  WEXTENSION_JPEG *wext = wnd->DlgData->UserData ;
  OBJECT          *adr_jpeg = wnd->DlgData->BaseObject ;
  int             code = -1 ;
  char            buf[10] ;

  switch( obj )
  {
     case JPEG_OK     : code = IDOK ;
                        break ;
     case JPEG_CANCEL : code = IDCANCEL ;
                        break ;
  }

  if ( code == IDOK )
  {
    read_text( adr_jpeg, JPEG_QUALITY, buf ) ;
    wext->inf->quality = atoi( buf ) ;
  }

  return( code ) ;
}
Beispiel #19
0
/*
 * Populate entries
 * Called from populate_sections in section.c
 * Called from on_section_change in section.c
 * Called from create_entry in entry.c
 */
gboolean populate_entries(book_data *book, section_data *section)
{
	GtkTreeModel *entry_model = NULL;
	GtkTreeView *entry_view = NULL;
	GtkTreeSelection *selection = NULL;
	GtkTreeIter tree_iter;
	entry_data *entry = NULL;

	// Get entry view
	entry_view = get_entry_view(book);

	// Create new entry model
	entry_model = create_entry_model(section);

	// Set entry model on entry view
	gtk_tree_view_set_model(entry_view, entry_model);

	// Does the section have entries?
	if(section->entry_list != NULL) {

		// Get current entry in section
		if(section->curr_entry != NULL) {
			entry = section->curr_entry;
			gtk_tree_model_get_iter(entry_model, &tree_iter, section->curr_entry_path);
		} else {
			entry = section->entry_list->data;
			gtk_tree_model_get_iter_first (entry_model, &tree_iter);
		}

		// Set current entry in section
		selection = gtk_tree_view_get_selection(entry_view);
		gtk_tree_selection_select_iter(selection, &tree_iter);
		if(section->curr_entry_path != NULL)
			gtk_tree_path_free(section->curr_entry_path);
		section->curr_entry_path = gtk_tree_model_get_path(entry_model, &tree_iter);
		section->curr_entry = entry;

		sn_trace("* Selectiong entry [%s/%s] in %s.",
			section->name, entry->name, __func__);

	} else {

		// Set current entry in section
		if(section->curr_entry_path != NULL)
			gtk_tree_path_free(section->curr_entry_path);
		section->curr_entry_path = NULL;
		section->curr_entry = NULL;

		sn_trace("* Selecting entry [(null)] in %s.", __func__);
	}

	// Read text of current entry
	sn_trace("> Reading current entry [%s/%s] in %s.",
		section->name, entry->name, __func__);

	read_text(book, entry);

	if (entry_model != NULL)
		g_object_unref(entry_model);

	return TRUE;
} // Populate entries
Beispiel #20
0
/* Entered after the '<' and the first character after that. Returns status
 * code.
 */
static void
read_element(PInfo pi) {
    struct _Attr	attrs[MAX_ATTRS];
    Attr		ap = attrs;
    char		*name;
    char		*ename;
    char		*end;
    char		c;
    long		elen;
    int			hasChildren = 0;
    int			done = 0;

    ename = read_name_token(pi);
    end = pi->s;
    elen = end - ename;
    next_non_white(pi);
    c = *pi->s;
    *end = '\0';
    if ('/' == c) {
	/* empty element, no attributes and no children */
	pi->s++;
	if ('>' != *pi->s) {
	    //printf("*** '%s' ***\n", pi->s);
	    raise_error("invalid format, element not closed", pi->str, pi->s);
	}
	pi->s++;	/* past > */
	ap->name = 0;
	pi->pcb->add_element(pi, ename, attrs, hasChildren);
	pi->pcb->end_element(pi, ename);

	return;
    }
    /* read attribute names until the close (/ or >) is reached */
    while (!done) {
	if ('\0' == c) {
	    next_non_white(pi);
	    c = *pi->s;
	}
	switch (c) {
	case '\0':
	    raise_error("invalid format, document not terminated", pi->str, pi->s);
	case '/':
	    // Element with just attributes.
	    pi->s++;
	    if ('>' != *pi->s) {
		raise_error("invalid format, element not closed", pi->str, pi->s);
	    }
	    pi->s++;
	    ap->name = 0;
	    pi->pcb->add_element(pi, ename, attrs, hasChildren);
	    pi->pcb->end_element(pi, ename);

	    return;
	case '>':
	    // has either children or a value
	    pi->s++;
	    hasChildren = 1;
	    done = 1;
	    ap->name = 0;
	    pi->pcb->add_element(pi, ename, attrs, hasChildren);
	    break;
	default:
	    // Attribute name so it's an element and the attribute will be
	    // added to it.
	    ap->name = read_name_token(pi);
	    end = pi->s;
	    next_non_white(pi);
	    if ('=' != *pi->s++) {
		raise_error("invalid format, no attribute value", pi->str, pi->s);
	    }
	    *end = '\0'; // terminate name
	    // read value
	    next_non_white(pi);
	    ap->value = read_quoted_value(pi);
	    if (0 != strchr(ap->value, '&')) {
		if (0 != collapse_special((char*)ap->value)) {
		    raise_error("invalid format, special character does not end with a semicolon", pi->str, pi->s);
		}
	    }
	    ap++;
	    if (MAX_ATTRS <= (ap - attrs)) {
		raise_error("too many attributes", pi->str, pi->s);
	    }
	    break;
	}
	c = '\0';
    }
    if (hasChildren) {
	char	*start;
	
	done = 0;
	// read children
	while (!done) {
	    start = pi->s;
	    next_non_white(pi);
	    c = *pi->s++;
	    if ('\0' == c) {
		raise_error("invalid format, document not terminated", pi->str, pi->s);
	    }
	    if ('<' == c) {
		switch (*pi->s) {
		case '!':	/* better be a comment or CDATA */
		    pi->s++;
		    if ('-' == *pi->s && '-' == *(pi->s + 1)) {
			pi->s += 2;
			read_comment(pi);
		    } else if (0 == strncmp("[CDATA[", pi->s, 7)) {
			pi->s += 7;
			read_cdata(pi);
		    } else {
			raise_error("invalid format, invalid comment or CDATA format", pi->str, pi->s);
		    }
		    break;
		case '/':
		    pi->s++;
		    name = read_name_token(pi);
		    end = pi->s;
		    next_non_white(pi);
		    c = *pi->s;
		    *end = '\0';
		    if (0 != strcmp(name, ename)) {
			raise_error("invalid format, elements overlap", pi->str, pi->s);
		    }
		    if ('>' != c) {
			raise_error("invalid format, element not closed", pi->str, pi->s);
		    }
		    pi->s++;
		    pi->pcb->end_element(pi, ename);
		    return;
		case '\0':
		    raise_error("invalid format, document not terminated", pi->str, pi->s);
		default:
		    // a child element
		    read_element(pi);
		    break;
		}
	    } else {	// read as TEXT
		pi->s = start;
		//pi->s--;
		read_text(pi);
		//read_reduced_text(pi);

		// to exit read_text with no errors the next character must be <
		if ('/' == *(pi->s + 1) &&
		    0 == strncmp(ename, pi->s + 2, elen) &&
		    '>' == *(pi->s + elen + 2)) {
		    // close tag after text so treat as a value
		    pi->s += elen + 3;
		    pi->pcb->end_element(pi, ename);
		    return;
		}
	    }
	}
    }
}
Beispiel #21
0
int main(int argc, char **argv)
{
    uint8_t codelen[128];
    struct Histogram32 h32;
    struct Codebook cb;
    struct Encoder enc;
    struct Tree tree;
    FILE *fout;
    int i,L;

    if(argc == 1) L = 16;
    //else if(argv == 2) L = atoi(argv[1]);
    else {
        fprintf(stderr,"Usage: %s\n", argv[0]);
        fprintf(stderr,"\treads input data from stdin, compresses it using\n");
        fprintf(stderr,"\tlength-restricted canonical huffman codes and writes\n");
        fprintf(stderr,"\tthe result to 'enc.out'.\n");
        exit(1);
    }

    read_text(stdin);

    histogram32_init(&h32);
    histogram32_add(&h32, buffer, buffer_fill);

    package_merge(&h32, L, codelen);
    //printf("final codelengths:\n");
    //codelen_dump(codelen, stdout);

    fprintf(stderr,"weight of huffman tree = %f\n", weight_of_tree(codelen));
    fprintf(stderr,"compression factor = %.11f\n",compr_factor(buffer,buffer_fill,codelen));

    ctree_create(&tree, codelen);
    //tree_print_flat(&tree,stderr);
    //ccodebook_create(&cb, codelen);
    codebook_create(&cb,&tree);
    //codebook_print(&cb,stderr);



    encoder_init(&enc, &cb);

    fout = fopen("enc.out","w");

    fwrite(&buffer_fill,4,1,fout);
    fwrite(codelen,128,1,fout);

    for(i = 0; i < buffer_fill; i++) {
        int c;
        //fprintf(stderr,"byte %d of %d\n",i,buffer_fill);
        encoder_put_symbol(&enc, buffer[i]);
        while((c = encoder_get_byte(&enc)) != ENCODER_NEED_INPUT) {
            uint8_t tmp = c;
            fwrite(&tmp,1,1,fout);
        }
    }

    i = encoder_get_last_byte(&enc);
    if(i != ENCODER_NEED_INPUT) {
        uint8_t tmp = i;
        fwrite(&tmp,1,1,fout);
    }

    fclose(fout);

    return 0;
}
Beispiel #22
0
int
main (int argc, char **argv)
{
  int success = 1;

  int verbose = 0;              /* 1: verbose, 0 (or nothing: not verbose) */
  int clone = 0;                /* 1: verbose, 0 (or nothing: not verbose) */
  int binary = 0;
  FILE *torture_file;
  char *msg;
  int pos;
  int len;

  for (pos = 3; pos < argc; pos++) {
    if (0 == strncmp (argv[pos], "-v", 2))
      verbose = 1;
    else if (0 == strncmp (argv[pos], "-c", 2))
      clone = 1;
    else if (0 == strncmp (argv[pos], "-b", 2))
      binary = 1;
    else
      usage ();
  }

  if (argc < 3) {
    usage ();
  }

  torture_file = fopen (argv[1], "r");
  if (torture_file == NULL) {
    usage ();
  }

  /* initialize parser */
  parser_init ();

  if (binary) {
    if (read_binary (&msg, &len, torture_file) < 0)
      return -1;
  }
  else {
    msg = read_text (atoi (argv[2]), torture_file);
    if (!msg)
      return -1;
    len = strlen (msg);
  }

  success = test_message (msg, len, verbose, clone);
  if (verbose) {
    fprintf (stdout, "test %s : ============================ \n", argv[2]);
    fwrite (msg, 1, len, stdout);

    if (0 == success)
      fprintf (stdout, "test %s : ============================ OK\n", argv[2]);
    else
      fprintf (stdout, "test %s : ============================ FAILED\n", argv[2]);
  }

  osip_free (msg);
  fclose (torture_file);
#ifdef __linux
  if (success)
    exit (EXIT_FAILURE);
  else
    exit (EXIT_SUCCESS);
#endif
  return success;
}
Beispiel #23
0
int OnObjectNotifyPal(void *w, int obj)
{
  GEM_WINDOW     *wnd = (GEM_WINDOW *) w ;
  WEXTENSION_PAL *wext = wnd->DlgData->UserData ;
  OBJECT         *adr_mkpal = wnd->DlgData->BaseObject ;
  int            off_x, off_y ;
  int            xm, ym, dummy ;
  int            pb_x, pb_y ;
  int            x1, y1, x2, y2 ;
  int            code = -1 ;
  char           buf[15] ;

  graf_mkstate( &xm, &ym, &dummy, &dummy ) ;

  switch( obj )
  {
    case MKPAL_MRED      :
    case MKPAL_PRED      : if ( obj == MKPAL_PRED ) wext->curr_rgb[0]++ ;
                           else                     wext->curr_rgb[0]-- ;
                           if (wext->curr_rgb[0] < 1)    wext->curr_rgb[0] = 1 ;
                           if (wext->curr_rgb[0] > 1000) wext->curr_rgb[0] = 1000 ;
                           off_y = (int) ((1000-wext->curr_rgb[0])*(float)wext->hf/1000.0) ;
                           adr_mkpal[MKPAL_RED].ob_y = off_y ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_REDBOX ) ;
                           sprintf(buf, "%.4d", wext->curr_rgb[0]) ;
                           write_text(adr_mkpal, MKPAL_TRED, buf) ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_TRED ) ;
                           vs_color(handle, wext->index, wext->curr_rgb) ;
                           break ;
    case MKPAL_MGREEN    :
    case MKPAL_PGREEN    : if ( obj == MKPAL_PGREEN ) wext->curr_rgb[1]++ ;
                           else                       wext->curr_rgb[1]-- ;
                           if (wext->curr_rgb[1] < 1)    wext->curr_rgb[1] = 1 ;
                           if (wext->curr_rgb[1] > 1000) wext->curr_rgb[1] = 1000 ;
                           off_y = (int) ((1000-wext->curr_rgb[1])*(float)wext->hf/1000.0) ;
                           adr_mkpal[MKPAL_GREEN].ob_y = off_y ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_GREENBOX ) ;
                           sprintf(buf, "%.4d", wext->curr_rgb[1]) ;
                           write_text(adr_mkpal, MKPAL_TGREEN, buf) ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_TGREEN ) ;
                           vs_color(handle, wext->index, wext->curr_rgb) ;
                           break ;
    case MKPAL_MBLUE     :
    case MKPAL_PBLUE     : if ( obj == MKPAL_PBLUE ) wext->curr_rgb[2]++ ;
                           else                      wext->curr_rgb[2]-- ;
                           if (wext->curr_rgb[2] < 1)    wext->curr_rgb[2] = 1 ;
                           if (wext->curr_rgb[2] > 1000) wext->curr_rgb[2] = 1000 ;
                           off_y = (int) ((1000-wext->curr_rgb[2])*(float)wext->hf/1000.0) ;
                           adr_mkpal[MKPAL_BLUE].ob_y = off_y ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_BLUEBOX ) ;
                           sprintf(buf, "%.4d", wext->curr_rgb[2]) ;
                           write_text(adr_mkpal, MKPAL_TBLUE, buf) ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_TBLUE ) ;
                           vs_color(handle, wext->index, wext->curr_rgb) ;
                           break ;
    case MKPAL_REDBOX    : 
                           objc_offset(adr_mkpal, MKPAL_RED, &off_x, &off_y) ;
                           if (ym > off_y) wext->curr_rgb[0] = wext->curr_rgb[0]-20 ;
                           else            wext->curr_rgb[0] = wext->curr_rgb[0]+20 ;
                           if (wext->curr_rgb[0] < 1)    wext->curr_rgb[0] = 1 ;
                           if (wext->curr_rgb[0] > 1000) wext->curr_rgb[0] = 1000 ;
                           off_y = (int) ((1000-wext->curr_rgb[0])*(float)wext->hf/1000.0) ;
                           adr_mkpal[MKPAL_RED].ob_y = off_y ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_REDBOX ) ;
                           sprintf(buf, "%.4d", wext->curr_rgb[0]) ;
                           write_text(adr_mkpal, MKPAL_TRED, buf) ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_TRED ) ;
                           vs_color(handle, wext->index, wext->curr_rgb) ;
                           break ;
    case MKPAL_GREENBOX  : 
                           objc_offset(adr_mkpal, MKPAL_GREEN, &off_x, &off_y) ;
                           if (ym > off_y) wext->curr_rgb[1] = wext->curr_rgb[1]-20 ;
                           else            wext->curr_rgb[1] = wext->curr_rgb[1]+20 ;
                           if (wext->curr_rgb[1] < 1)  wext->curr_rgb[1] = 1 ;
                           if (wext->curr_rgb[1] > 1000) wext->curr_rgb[1] = 1000 ;
                           off_y = (int) ((1000-wext->curr_rgb[1])*(float)wext->hf/1000.0) ;
                           adr_mkpal[MKPAL_GREEN].ob_y = off_y ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_GREENBOX ) ;
                           sprintf(buf, "%.4d", wext->curr_rgb[1]) ;
                           write_text(adr_mkpal, MKPAL_TGREEN, buf) ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_TGREEN ) ;
                           vs_color(handle, wext->index, wext->curr_rgb) ;
                           break ;
    case MKPAL_BLUEBOX   : 
                           objc_offset(adr_mkpal, MKPAL_BLUE, &off_x, &off_y) ;
                           if (ym > off_y) wext->curr_rgb[2] = wext->curr_rgb[2]-20 ;
                           else            wext->curr_rgb[2] = wext->curr_rgb[2]+20 ;
                           if (wext->curr_rgb[2] < 1)    wext->curr_rgb[2] = 1 ;
                           if (wext->curr_rgb[2] > 1000) wext->curr_rgb[2] = 1000 ;
                           off_y = (int) ((1000-wext->curr_rgb[2])*(float)wext->hf/1000.0) ;
                           adr_mkpal[MKPAL_BLUE].ob_y = off_y ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_BLUEBOX ) ;
                           sprintf(buf, "%.4d", wext->curr_rgb[2]) ;
                           write_text(adr_mkpal, MKPAL_TBLUE, buf) ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_TBLUE ) ;
                           vs_color(handle, wext->index, wext->curr_rgb) ;
                           break ;
    case MKPAL_RED       : wext->curr_rgb[0] = (float) graf_slidebox(adr_mkpal, MKPAL_REDBOX, MKPAL_RED, 1) ;
                           off_y = (int) (wext->curr_rgb[0]*(float)wext->hf/1000.0) ;
                           adr_mkpal[MKPAL_RED].ob_y = off_y ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_REDBOX ) ;
                           wext->curr_rgb[0] = 1000-wext->curr_rgb[0] ;
                           sprintf(buf, "%.4d", wext->curr_rgb[0]) ;
                           write_text(adr_mkpal, MKPAL_TRED, buf) ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_TRED ) ;
                           vs_color(handle, wext->index, wext->curr_rgb) ;
                           break ;
     case MKPAL_GREEN    : wext->curr_rgb[1] = (float) graf_slidebox(adr_mkpal, MKPAL_GREENBOX, MKPAL_GREEN, 1) ;
                           off_y = (int) (wext->curr_rgb[1]*(float)wext->hf/1000.0) ;
                           adr_mkpal[MKPAL_GREEN].ob_y = off_y ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_GREENBOX ) ;
                           wext->curr_rgb[1] = 1000-wext->curr_rgb[1] ;
                           sprintf(buf, "%.4d", wext->curr_rgb[1]) ;
                           write_text(adr_mkpal, MKPAL_TGREEN, buf) ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_TGREEN ) ;
                           vs_color(handle, wext->index, wext->curr_rgb) ;
                           break ;
    case MKPAL_BLUE      : wext->curr_rgb[2] = (float) graf_slidebox(adr_mkpal, MKPAL_BLUEBOX, MKPAL_BLUE, 1) ;
                           off_y = (int) (wext->curr_rgb[2]*(float)wext->hf/1000.0) ;
                           adr_mkpal[MKPAL_BLUE].ob_y = off_y ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_BLUEBOX ) ;
                           wext->curr_rgb[2] = 1000-wext->curr_rgb[2] ;
                           sprintf(buf, "%.4d", wext->curr_rgb[2]) ;
                           write_text(adr_mkpal, MKPAL_TBLUE, buf) ;
                           xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_TBLUE ) ;
                           vs_color(handle, wext->index, wext->curr_rgb) ;
                           break ;
    case MKPAL_LOAD     : charge_palette() ;
                          deselect(adr_mkpal, obj) ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, obj ) ;
                          wext->flag_aff = 0 ;
                          break ;
    case MKPAL_SAVE     : sauve_palette() ;
                          deselect(adr_mkpal, obj) ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, obj ) ;
                          wext->flag_aff = 0 ;
                          break ;
    case MKPAL_START    :
    case MKPAL_END      : if ( obj == MKPAL_START ) wext->stdeg  = wext->index ;
                          else                      wext->enddeg = wext->index ;
                          if (selected(adr_mkpal, MKPAL_START) && selected(adr_mkpal, MKPAL_END))
                          {
                            deselect(adr_mkpal, MKPAL_START) ;
                            deselect(adr_mkpal, MKPAL_END) ;
                            xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_START ) ;
                            xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_END ) ;
                            cree_degrade(wext->stdeg, wext->enddeg) ;
                            wext->stdeg = wext->enddeg = 500 ;
                          }
                          break ;
    case MKPAL_APPLIQUE : read_text(adr_mkpal, MKPAL_TRED, buf) ;
                          wext->rgb[0] = atoi(buf) ;
                          off_y = (int) ((1000-wext->rgb[0])*(float)wext->hf/1000.0) ;
                          adr_mkpal[MKPAL_RED].ob_y = off_y ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_REDBOX ) ;
                          read_text(adr_mkpal, MKPAL_TGREEN, buf) ;
                          wext->rgb[1] = atoi(buf) ;
                          off_y = (int) ((1000-wext->rgb[1])*(float)wext->hf/1000.0) ;
                          adr_mkpal[MKPAL_GREEN].ob_y = off_y ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_GREENBOX ) ;
                          read_text(adr_mkpal, MKPAL_TBLUE, buf) ;
                          wext->rgb[2] = atoi(buf) ;
                          off_y = (int) ((1000-wext->rgb[2])*(float)wext->hf/1000.0) ;
                          adr_mkpal[MKPAL_BLUE].ob_y = off_y ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_BLUEBOX ) ;
                          vs_color(handle, wext->index, wext->rgb) ;
                          deselect(adr_mkpal, obj) ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, obj ) ;
                          break ;
    case MKPAL_BOX      : objc_offset(adr_mkpal, obj, &pb_x, &pb_y) ;
                          if (wext->flag_aff)
                          {
                            x1 = pb_x+(wext->index % wext->nb_col_x)*wext->ww ;
                            y1 = pb_y+(wext->index / wext->nb_col_x)*wext->hh ;
                            x2 = x1+wext->ww-1 ;
                            y2 = y1+wext->hh-1 ;
                            vsf_color(handle, 1) ;
                            vswr_mode(handle, MD_XOR) ;
                            vsl_width(handle, 3) ;
                            v_hide_c(handle) ;
                            rectangle(x1, y1, x2, y2) ;
                            v_show_c(handle, 1) ;
                          }
                          else wext->flag_aff = 1 ;
                          graf_mkstate(&xm, &ym, &dummy, &dummy) ;
                          wext->index = (xm-pb_x)/wext->ww+ wext->nb_col_x*((ym-pb_y)/wext->hh) ;
                          vq_color(handle, wext->index, 0, wext->rgb) ;
                          sprintf(buf, "%.4d", wext->rgb[0]) ;
                          write_text(adr_mkpal, MKPAL_TRED, buf) ;
                          sprintf(buf, "%.4d", wext->rgb[1]) ;
                          write_text(adr_mkpal, MKPAL_TGREEN, buf) ;
                          sprintf(buf, "%.4d", wext->rgb[2]) ;
                          write_text(adr_mkpal, MKPAL_TBLUE, buf) ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_RGB ) ;
                          x1 = pb_x+wext->ww*((xm-pb_x)/wext->ww) ;
                          y1 = pb_y+wext->hh*((ym-pb_y)/wext->hh) ;
                          x2 = x1+wext->ww-1 ;
                          y2 = y1+wext->hh-1 ;
                          vsf_color(handle, 1) ;
                          v_hide_c(handle) ;
                          vswr_mode(handle, MD_XOR) ;
                          vsl_width(handle, 3) ;
                          rectangle(x1, y1, x2, y2) ;
                          v_show_c(handle, 1) ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_CURRCOL ) ;
                          off_y = (int) ((1000-wext->rgb[0])*(float)wext->hf/1000.0) ;
                          adr_mkpal[MKPAL_RED].ob_y = off_y ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_REDBOX ) ;
                          off_y = (int) ((1000-wext->rgb[1])*(float)wext->hf/1000.0) ;
                          adr_mkpal[MKPAL_GREEN].ob_y = off_y ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_GREENBOX ) ;
                          off_y = (int) ((1000-wext->rgb[2])*(float)wext->hf/1000.0) ;
                          adr_mkpal[MKPAL_BLUE].ob_y = off_y ;
                          xobjc_draw( wnd->window_handle,adr_mkpal, MKPAL_BLUEBOX ) ;
                          break ;
     case MKPAL_OK      : code = IDOK ;
                          break ;
     case MKPAL_CANCEL  : code = IDCANCEL ;
                          break ;
  }

  if ( code == IDOK )
  {

  }

  return( code ) ;
}
Beispiel #24
0
/* ************************************************************
   *                                                          *
   * main compression routine                                 *
   *                                                          *
   ********************************************************** */
void compress_file(void)
{
  void read_text(FILE *, bwi_input *s);
  void remap_alphabet(bwi_input *s);
  void build_sa(bwi_input *s);
  void compute_bwt(bwi_input *s);
  void compute_info_superbuckets(bwi_input *s);
  void compute_info_buckets(bwi_input *s);
  void write_prologue(bwi_input *s);
  void compress_superbucket(bwi_input *s, int);
  int compute_locations(bwi_input *s);
  int compute_locations_dict(bwi_input *s, int*);
  int compute_ranks_dict(bwi_input *s, int*);
  int compute_locations_huffword(bwi_input *s, int *);
  void bit_flush( void );
  void bit_write(int,int);  
  void init_bit_buffer(void);
  void write_susp_infos(bwi_input *s);
  bwi_input s;
  int i,len, retr_occ, retr_occ2, loc_occ_range;
  int Start_prologue_ranks;

  /* --------- Load the text file from disk ------- */  
  if(Verbose) fprintf(stderr,"Reading input file... ");  
  read_text(Infile, &s);
  if(Verbose) fprintf(stderr,"done! (%f seconds)\n",getTime());
  
  /* --------- Compact alphabet ------- */  
  if(Verbose>1) fprintf(stderr,"Remapping alphabet... ");  
  remap_alphabet(&s);
  if(Verbose>1) fprintf(stderr,"done! (%f seconds). ",getTime());
  if(Verbose>1) fprintf(stderr,"Compact alphabet size = %d\n",s.alpha_size);

  /* --------- Build suffix array ------- */  
  if(Verbose) fprintf(stderr,"Building suffix array");  
  build_sa(&s);
  if(Verbose) fprintf(stderr,"done! (%f seconds)\n",getTime());

  /* --------- Compute BWT ------- */  
  if(Verbose>1) fprintf(stderr,"Computing BWT... ");
  compute_bwt(&s);
  if(Verbose>1) fprintf(stderr,"done! (%f seconds)\n",getTime());

  /* ------- mark chars and compute locations ----- */ 
  if (Is_dictionary)
    retr_occ = compute_locations_dict(&s,&loc_occ_range);    // dictionary
  else if (Is_huffword)
    retr_occ = compute_locations_huffword(&s,&loc_occ_range);// huffword 
  else if (Is_URL)
    retr_occ = compute_ranks_dict(&s,&loc_occ_range);        // URL
  else
    retr_occ = compute_locations(&s);                        // standard


  /* --------- Compute various infos for each superbucket ------- */  
  if(Verbose>1) fprintf(stderr,"Computing infos superbukets... ");
  compute_info_superbuckets(&s);
  if(Verbose>1) fprintf(stderr,"done! (%f seconds)\n", getTime());

  /* --------- Compute various infos for each bucket ------- */  
  if(Verbose>1) fprintf(stderr,"Computing infos buckets... ");
  compute_info_buckets(&s);
  if(Verbose>1) fprintf(stderr,"done! (%f seconds)\n", getTime());

  /* --------- Writing the compressed file ------- */
  Infile_size = s.text_size; 
  Outfile_size=0;

  write_prologue(&s);
  if(Verbose) fprintf(stderr,"Prologue --> %d bytes!\n",Outfile_size);

  for(i=0;i<Num_bucs_lev1;i++)
    compress_superbucket(&s,i);

  /* ---- keep starting positions of occ-explicit list ---- */
  Start_prologue_occ = Outfile_size;

  /* -- write the starting position of buckets -- */
  write_susp_infos(&s);

  if (fseek(Outfile,Start_prologue_occ,SEEK_SET)) {
    fprintf(stderr, "Seek error on output file -compress_file-\n");
    exit(1);
  }


  /* -- write the position of the marked chars ---- */
  init_bit_buffer();
  if(Is_dictionary || Is_huffword || Is_URL)
    len = int_log2(loc_occ_range);     // bits required for each rank
  else  
    len = int_log2(s.text_size);       // bits required for each pos 

  for(i=0; i < retr_occ; i++)
    bit_write(len,s.loc_occ[i]);

  bit_flush();

  Start_prologue_ranks = (int)ftell(Outfile);

  if(Verbose)  
    fprintf(stderr,"List of %d marked ranks --> %d bytes!\n",
	    retr_occ,Start_prologue_ranks-Start_prologue_occ);

  /* -- in the case of URL we also store the DICT info -- */
  /* It should be put together with the computation above --*/
  /* Thus removing these differences in the code --*/
  /* Hence Start_prologue_occ indicates the starting position of RANKS. */
  /* After retr_occ RANKS start the LOCATIONS, which are again retr_occ */
  /* in number. The value of retr_occ can be computed at decompression time */
  /* by using the same formula adopted in compute_ranks_dict() */
  if (Is_URL) {
    retr_occ2 = compute_locations_dict(&s,&loc_occ_range);  // DICT
    
    if (retr_occ != retr_occ2)
      out_of_mem("Unequal number of sampled NULLs\n");

    for(i=0; i < retr_occ; i++)
      bit_write(len,s.loc_occ[i]);
    
    bit_flush();
  
    
  if(Verbose) 
    fprintf(stderr,"List of %d marked locations --> %d bytes!\n",
	    retr_occ2,(int)ftell(Outfile) - Start_prologue_ranks);
  }
}
Beispiel #25
0
/** Metode for å lese fra fil
 *  @param int romnr
 *  @param iftrea &file
 */
Suite::Suite(int romnr, ifstream &file): Rom(romnr, file) {
    antall_senger = read_int(file);
    antall_kvadratmeter = read_int(file);
	beskrivelse = read_text(file);
}
Beispiel #26
0
int OnObjectNotifySldShow(void *w, int obj)
{
  GEM_WINDOW *wnd = (GEM_WINDOW *) w ;
  WEXTENSION_SLDSHOW *wext = wnd->DlgData->UserData ;
  WDLG_DATA          *wdlg = wnd->Extension ;
  OBJECT             *adr_sldshow = wnd->DlgData->BaseObject ;
  int                i, off_x, off_y ;
  int                code = -1 ;
  char               buffer[20] ;

  switch( obj )
  {
    case SSH_TRANSITION  : deselect(adr_sldshow, SSH_TRANSITION) ;
                           objc_offset(adr_sldshow, SSH_TRANSITION, &off_x, &off_y) ;
                           i = popup_formdo(&wdlg->popup_transition, off_x, off_y, 1+wext->transition, -1) ;
                           if (i > 0) wext->transition = i-1 ;
                           write_text( adr_sldshow, SSH_TRANSITION, msg[MSG_TRANSIT0+wext->transition] ) ;
                           xobjc_draw( wnd->window_handle, adr_sldshow, SSH_TRANSITION ) ;
                           break ;
    case SSH_FOND        : deselect(adr_sldshow, SSH_FOND) ;
                           objc_offset(adr_sldshow, SSH_FOND, &off_x, &off_y) ;
                           i = popup_formdo(&wdlg->popup_back, off_x, off_y, 1+wext->back, -1) ;
                           if (i > 0) wext->back = i-1 ;
                           if ( wext->back == BACK_WHITE )
                             write_text(adr_sldshow, SSH_FOND, msg[MSG_BLANC]) ;
                           else
                             write_text(adr_sldshow, SSH_FOND, msg[MSG_NOIR]) ;
                           xobjc_draw( wnd->window_handle, adr_sldshow, SSH_FOND ) ;
                           break ;
    case SSH_TAFFZOOM    : inv_select( adr_sldshow, SSH_AFFZOOM ) ;
                           break ;
    case SSH_TAFFREDUC   : inv_select( adr_sldshow, SSH_AFFREDUC ) ;
                           break ;
    case SSH_TCYCLE      : inv_select(adr_sldshow, SSH_CYCLE) ;
                           break ;
    case SSH_TCLSSCREEN  : inv_select(adr_sldshow, SSH_CLSSCREEN) ;
                           break ;
    case SSH_TSHOWNAME   : inv_select(adr_sldshow, SSH_SHOWNAME) ;
                           break ;
    case SSH_TSHOWPROG   : inv_select(adr_sldshow, SSH_SHOWPROG) ;
                           break ;
    case SSH_NOTIMER     : 
    case SSH_TNOTIMER    : inv_select(adr_sldshow, SSH_NOTIMER) ;
                           if ( selected(adr_sldshow, SSH_NOTIMER) )
                           {
                             adr_sldshow[SSH_WAITMINI].ob_state   |= DISABLED ;
                             adr_sldshow[SSH_TWAITMINI].ob_state  |= DISABLED ;
                           }
                           else
                           {
                             adr_sldshow[SSH_WAITMINI].ob_state   &= ~DISABLED ;
                             adr_sldshow[SSH_TWAITMINI].ob_state  &= ~DISABLED ;
                           }
                           xobjc_draw( wnd->window_handle, adr_sldshow, SSH_WAITMINI ) ;
                           xobjc_draw( wnd->window_handle, adr_sldshow, SSH_TWAITMINI ) ;
                           break ;
     case SLDSHOW_OK :     code = IDOK ;
                           break ;
     case SLDSHOW_CANCEL : code = IDCANCEL ;
                           break ;
  }

  if ( code == IDOK )
  {
    if ( selected(adr_sldshow, SSH_AFFZOOM) )  config.display_type |= DISPLAYTYPE_ZOOM ;
    else                                       config.display_type &= ~DISPLAYTYPE_ZOOM ;
    if ( selected(adr_sldshow, SSH_AFFREDUC) ) config.display_type |= DISPLAYTYPE_REDUC ;
    else                                      config.display_type &= ~DISPLAYTYPE_REDUC ;

    if ( wext->back >= 0 ) config.back = wext->back ;
    if ( wext->transition >= 0 ) config.transition = wext->transition ;
    if ( selected(adr_sldshow, SSH_CYCLE) ) config.cycle = 1 ;
    else                                    config.cycle = 0 ;
    if ( selected(adr_sldshow, SSH_CLSSCREEN) ) config.do_not_cls_scr = 0 ;
    else                                        config.do_not_cls_scr = 1 ;
    if ( selected(adr_sldshow, SSH_SHOWNAME) ) config.aff_name = 1 ;
    else                                       config.aff_name = 0 ;
    if ( selected(adr_sldshow, SSH_SHOWPROG) ) config.aff_prog = 1 ;
    else                                       config.aff_prog = 0 ;
    if ( !selected( adr_sldshow, SSH_NOTIMER ) )
    {
      read_text(adr_sldshow, SSH_WAITMINI, buffer) ;
      config.wait_mini_sec = atoi(buffer) ;
    }
    else
      config.wait_mini_sec = -1 ;
  }

  return( code ) ;
}
 void read_username(int *bytes_read = NULL, int *sum = NULL)
 {
     QString name = read_text(20, bytes_read, sum);
     //deviceInfo += QString("User : %1\n").arg(name);
 }
Beispiel #28
0
void OnInitPrinterDialog(void *w)
{
  static int printer_index ;
  static int type_index = 0 ;
  GEM_WINDOW *wnd = (GEM_WINDOW *) w ;
  DIALOG     *dlg = (DIALOG *) wnd->DlgData ;
  DLGPRINTER_USER_DATA *dlg_user_data = dlg->UserData ;  
  DLGPRINTER_WEXTENSION *wext ;
  OBJECT     *adr_print = dlg->BaseObject ;
  int        i ;
  char       buffer[200] ;

  wnd->Extension = calloc( sizeof(DLGPRINTER_WEXTENSION), 1 ) ;
  wext = (DLGPRINTER_WEXTENSION *) wnd->Extension ;

  read_text( adr_print,  PRINT_FILE, buffer  ) ;
  if ( dlg_user_data->filename[0] ) write_text( adr_print, PRINT_FILE, dlg_user_data->filename ) ;
  else                              write_text( adr_print, PRINT_FILE, buffer ) ;

  wext->popup_page = popup_make(1+LAST_INDEX, 11) ;
  for (i = 0; i <= LAST_INDEX; i++)
    strcpy(wext->popup_page[1+i].ob_spec.free_string, tab_page[i]->nom) ;

  wext->popup_printer = popup_make(nb_drivers, 20) ;
  for (i = 0; i < nb_drivers; i++)
    sprintf(wext->popup_printer[1+i].ob_spec.free_string, " %s", &printer_names[i][0]) ;

  dlg_user_data->printer_index = printer_index ;

  wext->popup_type = popup_make(2, 20) ;
  strcpy(wext->popup_type[1].ob_spec.free_string, msg[MSG_PRINTCOLOR]) ;
  strcpy(wext->popup_type[2].ob_spec.free_string, msg[MSG_PRINTBW]) ;

  dlg_user_data->sizex = (float)dlg_user_data->raster.fd_w*(float)dlg_user_data->info.lpix/10000.0 ; /* En cm */
  sprintf(buffer, "%.1f", dlg_user_data->sizex) ;
  write_text(adr_print, PRINT_SIZEX, buffer) ;
  dlg_user_data->sizey = (float)dlg_user_data->raster.fd_h*(float)dlg_user_data->info.hpix/10000.0 ; /* En cm */
  sprintf(buffer, "%.1f", dlg_user_data->sizey) ;
  write_text(adr_print, PRINT_SIZEY, buffer) ;
  write_text(adr_print, PRINT_XPC, "100") ;
  write_text(adr_print, PRINT_YPC, "100") ;

  dlg_user_data->page.unite = CM ;
  read_text(adr_print, PRINT_SIZEPAGEW, buffer) ;
  dlg_user_data->page.largeur = atof(buffer) ;
  read_text(adr_print, PRINT_SIZEPAGEH, buffer) ;
  dlg_user_data->page.hauteur = atof(buffer) ;
  setup_pagename(&dlg_user_data->page) ;

  deselect(adr_print, PRINT_R90) ;
  deselect(adr_print, PRINT_CENTREX) ;
  deselect(adr_print, PRINT_CENTREY) ;

  if (dlg_user_data->info.nplans == 1)
  {
    adr_print[PRINT_TYPE].ob_state |= DISABLED ;
    dlg_user_data->type_index = 1 ;
  }
  else
  {
    adr_print[PRINT_TYPE].ob_state &= ~DISABLED ;
    dlg_user_data->type_index = type_index ;
  }

  write_text(adr_print, PRINT_CONFIGPAGE, dlg_user_data->page.nom) ;
  write_text(adr_print, PRINT_PRINTER, wext->popup_printer[1+dlg_user_data->printer_index].ob_spec.free_string) ;
  write_text(adr_print, PRINT_TYPE, wext->popup_type[1+dlg_user_data->type_index].ob_spec.free_string) ;

  sprintf(buffer, "%.4d/%.4d", micron2dpi(dlg_user_data->info.lpix), micron2dpi(dlg_user_data->info.hpix)) ;
  write_text(adr_print, PRINT_RESOL, buffer) ;

  compute_page( dlg ) ;
}
Beispiel #29
0
int OnObjectNotifyPrinterDialog(void *wi, int obj) /* >=0 : sortie de la fenetre, code IDOK ou IDCANCEL */
{
  GEM_WINDOW *wnd = (GEM_WINDOW *) wi ;
  DIALOG     *dlg = (DIALOG *) wnd->DlgData ;
  OBJECT     *adr_print = dlg->BaseObject ;
  DLGPRINTER_USER_DATA *dlg_user_data = dlg->UserData ;
  DLGPRINTER_WEXTENSION *wext = wnd->Extension ;
  float      number ;
  static int pc ;
  int        rx, ry ;
  int        xc, yc ;
  int        w, h ;
  int        clicked ;
  int        ix, iy ;
  int        xr, yr ;
  int        lx, ly, lw, lh ;
  int        code = -1 ;
  char       *c, buffer[100], buf[100] ;

  switch( obj )
  {
    case PRINT_XPCMOINS   :
    case PRINT_XPCPLUS    : read_text(adr_print, PRINT_XPC, buffer) ;
                            pc = atoi(buffer) ;
                            if (obj == PRINT_XPCPLUS) pc += PC_STEP ;
                            else                      pc -= PC_STEP ;
                            if (pc < 2) pc = 2 ;
                            if (pc > 999) pc = 999 ;
                            sprintf(buffer, "%d", pc) ;
                            write_text(adr_print, PRINT_XPC, buffer) ;
                            number = dlg_user_data->sizex*(float)pc/100.0 ;
                            adr_print[PRINT_IMAGE].ob_width  = (int) (number*(float)dlg_user_data->spx/dlg_user_data->page.largeur) ;
                            sprintf(buffer, "%.1f", number) ;
                            write_text(adr_print, PRINT_SIZEX, buffer) ;
                            if (selected(adr_print, PRINT_KEEPRATIO))
                            {
                              sprintf(buffer, "%d", pc) ;
                              write_text(adr_print, PRINT_YPC, buffer) ;
                              number = dlg_user_data->sizey*(float)pc/100.0 ;
                              adr_print[PRINT_IMAGE].ob_height = (int) (number*(float)dlg_user_data->spy/dlg_user_data->page.hauteur) ;
                              sprintf(buffer, "%.1f", number) ;
                              write_text(adr_print, PRINT_SIZEY, buffer) ;
                              xobjc_draw( wnd->window_handle, adr_print, PRINT_YPC ) ;
                              xobjc_draw( wnd->window_handle, adr_print, PRINT_SIZEY ) ;
                            }
                            rx = (int) ((float)dlg_user_data->info.lpix*(float)pc/100.0) ;
                            ry = (int) ((float)dlg_user_data->info.hpix*(float)pc/100.0) ;
                            sprintf(buffer, "%.4d/%.4d", micron2dpi(rx), micron2dpi(ry)) ;
                            write_text(adr_print, PRINT_RESOL, buffer) ;
                            deselect(adr_print, obj) ;
                            xobjc_draw( wnd->window_handle, adr_print, PRINT_XPC ) ;
                            xobjc_draw( wnd->window_handle, adr_print, PRINT_SIZEX ) ;
                            xobjc_draw( wnd->window_handle, adr_print, obj ) ;
                            xobjc_draw( wnd->window_handle, adr_print, PRINT_PAGE ) ;
                            xobjc_draw( wnd->window_handle, adr_print, PRINT_RESOL ) ;
                            if (selected(adr_print, PRINT_CENTREX)) button_center( wnd, adr_print, 0, 0 ) ;
                            if (selected(adr_print, PRINT_CENTREY)) button_center( wnd, adr_print, 1, 0 ) ;
                            break ;
      case PRINT_YPCMOINS   :
      case PRINT_YPCPLUS    : read_text(adr_print, PRINT_YPC, buffer) ;
                              pc = atoi(buffer) ;
                              if (obj == PRINT_YPCPLUS) pc += PC_STEP ;
                              else                      pc -= PC_STEP ;
                              if (pc < 2) pc = 2 ;
                              if (pc > 999) pc = 999 ;
                              sprintf(buffer, "%d", pc) ;
                              write_text(adr_print, PRINT_YPC, buffer) ;
                              number = dlg_user_data->sizey*(float)pc/100.0 ;
                              adr_print[PRINT_IMAGE].ob_height  = (int) (number*(float)dlg_user_data->spy/dlg_user_data->page.hauteur) ;
                              sprintf(buffer, "%.1f", number) ;
                              write_text(adr_print, PRINT_SIZEY, buffer) ;
                              if (selected(adr_print, PRINT_KEEPRATIO))
                              {
                                sprintf(buffer, "%d", pc) ;
                                write_text(adr_print, PRINT_XPC, buffer) ;
                                number = dlg_user_data->sizex*(float)pc/100.0 ;
                                adr_print[PRINT_IMAGE].ob_width  = (int) (number*(float)dlg_user_data->spx/dlg_user_data->page.largeur) ;
                                sprintf(buffer, "%.1f", number) ;
                                write_text(adr_print, PRINT_SIZEX, buffer) ;
                                xobjc_draw( wnd->window_handle, adr_print, PRINT_XPC ) ;
                                xobjc_draw( wnd->window_handle, adr_print, PRINT_SIZEX ) ;
                              }
                              rx = (int) ((float)dlg_user_data->info.lpix*(float)pc/100.0) ;
                              ry = (int) ((float)dlg_user_data->info.hpix*(float)pc/100.0) ;
                              sprintf(buffer, "%.4d/%.4d", micron2dpi(rx), micron2dpi(ry)) ;
                              write_text(adr_print, PRINT_RESOL, buffer) ;
                              deselect(adr_print, obj) ;
                              xobjc_draw( wnd->window_handle, adr_print, PRINT_YPC ) ;
                              xobjc_draw( wnd->window_handle, adr_print, PRINT_SIZEY ) ;
                              xobjc_draw( wnd->window_handle, adr_print, obj ) ;
                              xobjc_draw( wnd->window_handle, adr_print, PRINT_PAGE ) ;
                              xobjc_draw( wnd->window_handle, adr_print, PRINT_RESOL ) ;
                              if (selected(adr_print, PRINT_CENTREX)) button_center( wnd, adr_print, 0, 0 ) ;
                              if (selected(adr_print, PRINT_CENTREY)) button_center( wnd, adr_print, 1, 0 ) ;
                              break ;
      case PRINT_R90        :
      case PRINT_TR90       : inv_select(adr_print, PRINT_R90) ;
                              xc = adr_print[PRINT_IMAGE].ob_width ;
                              adr_print[PRINT_IMAGE].ob_width = adr_print[PRINT_IMAGE].ob_height ;
                              adr_print[PRINT_IMAGE].ob_height = xc ;
                              xobjc_draw( wnd->window_handle, adr_print, PRINT_PAGE ) ;
                              number = dlg_user_data->sizex ;
                              dlg_user_data->sizex  = dlg_user_data->sizey ;
                              dlg_user_data->sizey  = number ;
                              read_text(adr_print, PRINT_SIZEX, buf) ;
                              read_text(adr_print, PRINT_SIZEY, buffer) ;
                              write_text(adr_print, PRINT_SIZEX, buffer) ;
                              write_text(adr_print, PRINT_SIZEY, buf) ;
                              xobjc_draw( wnd->window_handle, adr_print, PRINT_SIZEX ) ;
                              xobjc_draw( wnd->window_handle, adr_print, PRINT_SIZEY ) ;
                              read_text(adr_print, PRINT_XPC, buf) ;
                              read_text(adr_print, PRINT_YPC, buffer) ;
                              write_text(adr_print, PRINT_XPC, buffer) ;
                              write_text(adr_print, PRINT_YPC, buf) ;
                              xobjc_draw( wnd->window_handle, adr_print, PRINT_XPC ) ;
                              xobjc_draw( wnd->window_handle, adr_print, PRINT_YPC ) ;
                              if (selected(adr_print, PRINT_CENTREX)) button_center( wnd, adr_print, 0, 0 ) ;
                              if (selected(adr_print, PRINT_CENTREY)) button_center( wnd, adr_print, 1, 0 ) ;
                              break ;
      case PRINT_CENTREX    :
      case PRINT_TCENTREX   : button_center( wnd, adr_print, 0, 1 ) ;
                              break ;
      case PRINT_CENTREY    :
      case PRINT_TCENTREY   : button_center( wnd, adr_print, 1, 1 ) ;
                              break ;
      case PRINT_KEEPRATIO  :
      case PRINT_TKEEPRATIO : inv_select(adr_print, PRINT_KEEPRATIO) ;
                              break ;
      case PRINT_IMAGE      : w = adr_print[PRINT_IMAGE].ob_width ;
                              h = adr_print[PRINT_IMAGE].ob_height ;
                              objc_offset(adr_print, PRINT_IMAGE, &ix, &iy) ;
                              objc_offset(adr_print, PRINT_PAGE, &lx, &ly) ;
                              lw = adr_print[PRINT_PAGE].ob_width ;
                              lh = adr_print[PRINT_PAGE].ob_height ;
                              my_dragbox(w, h, ix, iy, lx, ly, lw, lh, &xr, &yr) ;
                              adr_print[PRINT_IMAGE].ob_x = xr-lx ;
                              adr_print[PRINT_IMAGE].ob_y = yr-ly ;
                              xobjc_draw( wnd->window_handle, adr_print, PRINT_PAGE ) ;
                              if (selected(adr_print, PRINT_CENTREX)) inv_select(adr_print, PRINT_CENTREX) ;
                              if (selected(adr_print, PRINT_CENTREY)) inv_select(adr_print, PRINT_CENTREY) ;
                              break ;
      case PRINT_CONFIGPAGE : deselect(adr_print, PRINT_CONFIGPAGE) ;
                              dlg_user_data->page_index = tab_page_index(&dlg_user_data->page) ;
                              objc_offset(adr_print, PRINT_CONFIGPAGE, &xc, &yc) ;
                              clicked  = popup_formdo(&wext->popup_page, xc, yc, 1+dlg_user_data->page_index, 0) ;
                              if (clicked > 0)
                              {
                                write_text(adr_print, PRINT_CONFIGPAGE, tab_page[clicked-1]->nom) ;
                                memcpy(&dlg_user_data->page, tab_page[clicked-1], sizeof(PAGE)) ;
                                compute_page( dlg ) ;
                                xobjc_draw( wnd->window_handle, adr_print, PRINT_GROUP ) ;
                              }
                              xobjc_draw( wnd->window_handle, adr_print, PRINT_CONFIGPAGE ) ;
                              show_dimpage( wnd, &dlg_user_data->page, adr_print ) ;

                              read_text(adr_print, PRINT_XPC, buffer) ;
                              pc = atoi(buffer) ;
                              sprintf(buffer, "%d", pc) ;
                              number = dlg_user_data->sizex*(float)pc/100.0 ;
                              adr_print[PRINT_IMAGE].ob_width = (int) (number*(float)dlg_user_data->spy/dlg_user_data->page.hauteur) ;
                              sprintf(buffer, "%.1f", number) ;
                              write_text(adr_print, PRINT_SIZEY, buffer) ;
                              read_text(adr_print, PRINT_YPC, buffer) ;
                              pc = atoi(buffer) ;
                              sprintf(buffer, "%d", pc) ;
                              number = dlg_user_data->sizey*(float)pc/100.0 ;
                              adr_print[PRINT_IMAGE].ob_height = (int) (number*(float)dlg_user_data->spx/dlg_user_data->page.largeur) ;
                              sprintf(buffer, "%.1f", number) ;
                              write_text(adr_print, PRINT_SIZEY, buffer) ;
                              rx = (int) ((float)dlg_user_data->info.lpix*(float)pc/100.0) ;
                              ry = (int) ((float)dlg_user_data->info.hpix*(float)pc/100.0) ;
                              sprintf(buffer, "%.4d/%.4d", micron2dpi(rx), micron2dpi(ry)) ;
                              write_text(adr_print, PRINT_RESOL, buffer) ;
                              xobjc_draw( wnd->window_handle, adr_print, PRINT_SIZEY ) ;
                              xobjc_draw( wnd->window_handle, adr_print, PRINT_PAGE ) ;
                              xobjc_draw( wnd->window_handle, adr_print, PRINT_RESOL ) ;
                              if (selected(adr_print, PRINT_CENTREX)) button_center( wnd, adr_print, 0, 0 ) ;
                              if (selected(adr_print, PRINT_CENTREY)) button_center( wnd, adr_print, 1, 0 ) ;
                              break ;
      case PRINT_PRINTER    : deselect(adr_print, PRINT_PRINTER) ;
                              objc_offset(adr_print, PRINT_PRINTER, &xc, &yc) ;
                              clicked  = popup_formdo(&wext->popup_printer, xc, yc, 1+dlg_user_data->printer_index, 0) ;
                              if (clicked > 0)
                              {
                                dlg_user_data->printer_index = clicked-1 ;
                                write_text(adr_print, PRINT_PRINTER, wext->popup_printer[1+dlg_user_data->printer_index].ob_spec.free_string) ;
                              }
                              xobjc_draw( wnd->window_handle, adr_print, PRINT_PRINTER ) ;
                              sprintf(buffer, "%d", id[dlg_user_data->printer_index]) ;
                              write_text(adr_print, PRINT_ID, buffer) ;
                              xobjc_draw( wnd->window_handle, adr_print, PRINT_ID ) ;
                              break ;
      case PRINT_TYPE       : if (!(adr_print[PRINT_TYPE].ob_state & DISABLED))
                              {
                                deselect(adr_print, PRINT_TYPE) ;
                                objc_offset(adr_print, PRINT_TYPE, &xc, &yc) ;
                                clicked  = popup_formdo(&wext->popup_type, xc, yc, 1+dlg_user_data->type_index, 0) ;
                                if (clicked > 0)
                                {
                                  dlg_user_data->type_index = clicked-1 ;
                                  write_text(adr_print, PRINT_TYPE, wext->popup_type[1+dlg_user_data->type_index].ob_spec.free_string) ;
                                }
                                xobjc_draw( wnd->window_handle, adr_print, PRINT_TYPE ) ;
                              }
                              break ;
      case PRINT_FILE       : strcpy(buffer, dlg_user_data->filename) ;
                              c = strrchr(buffer, '\\') ;
                              if (c != NULL) *c = 0 ;
                              strcat(buffer, "\\*.*") ;

                              if ( file_name(buffer, "", buffer) == 1 )
                              {
                                INFO_IMAGE inf ;

                                strcpy(dlg_user_data->filename, buffer) ;
                                write_text(adr_print, PRINT_FILE, dlg_user_data->filename) ;

                                if ( img_format( dlg_user_data->filename, &inf ) == 0 )
                                {
                                  memcpy( &dlg_user_data->info, &inf, sizeof(INFO_IMAGE) ) ;
                                  deselect(adr_print, PRINT_R90) ;
                                  deselect(adr_print, PRINT_CENTREX) ;
                                  deselect(adr_print, PRINT_CENTREY) ;
                                  memset(&dlg_user_data->raster, 0, sizeof(MFDB)) ;
                                  dlg_user_data->raster.fd_w       = dlg_user_data->info.largeur ;
                                  dlg_user_data->raster.fd_h       = dlg_user_data->info.hauteur ;
                                  dlg_user_data->raster.fd_nplanes = dlg_user_data->info.nplans ;
                                  dlg_user_data->raster.fd_wdwidth = dlg_user_data->raster.fd_w/16 ;
                                  if (dlg_user_data->raster.fd_w % 16) dlg_user_data->raster.fd_wdwidth++ ;
                                  dlg_user_data->sizex = (float)dlg_user_data->raster.fd_w*(float)dlg_user_data->info.lpix/10000.0 ; /* En cm */
                                  sprintf(buffer, "%.1f", dlg_user_data->sizex) ;
                                  write_text(adr_print, PRINT_SIZEX, buffer) ;
                                  dlg_user_data->sizey = (float)dlg_user_data->raster.fd_h*(float)dlg_user_data->info.hpix/10000.0 ; /* En cm */
                                  sprintf(buffer, "%.1f", dlg_user_data->sizey) ;
                                  write_text(adr_print, PRINT_SIZEY, buffer) ;
                                  write_text(adr_print, PRINT_XPC, "100") ;
                                  write_text(adr_print, PRINT_YPC, "100") ;
                                  compute_page( dlg ) ;
                                }
                              }
                              deselect(adr_print, obj) ;
                              break ;
      case PRINT_OK         : code = IDOK ;
                              break ;
      case PRINT_CANCEL     : code = IDCANCEL ;
                              break ;
    }

  if ( code == IDOK )
  {
    /* Mise a jour de UserData */
    dlg_user_data->rotate90 = selected( adr_print, PRINT_R90 ) ;
    read_text( adr_print, PRINT_XPC, buffer ) ;
    dlg_user_data->xpc = atof( buffer ) ;
    read_text( adr_print, PRINT_YPC, buffer ) ;
    dlg_user_data->ypc = atof( buffer ) ;
    dlg_user_data->posx = dlg_user_data->page.largeur*(float)adr_print[PRINT_IMAGE].ob_x/(float)adr_print[PRINT_PAGE].ob_width ;
    dlg_user_data->posy = dlg_user_data->page.hauteur*(float)adr_print[PRINT_IMAGE].ob_y/(float)adr_print[PRINT_PAGE].ob_height ;
  }

  return( code ) ;
}
Beispiel #30
0
void setup_details(GEM_WINDOW *wnd, int display)
{
  WEXTENSION_LDVDETAIL *wext = wnd->DlgData->UserData ;
  LDV_CAPS             *caps = NULL ;
  OBJECT               *bobj = wnd->DlgData->BaseObject ;
  int                  nplanes ;
  char                 buf[100] ;

  read_text( bobj, LDVD_NPLANES, buf ) ;
  nplanes = atoi( buf ) ;
  if ( nplanes > 0 ) caps = LDVGetNPlanesCaps( wext->LdvModule, nplanes ) ;

  if ( caps )
  {
    bobj[LDVD_NPLANES].ob_state &= ~DISABLED ;
    sprintf( buf, "%d", caps->NbPlanesOut ) ;
    write_text( bobj, LDVD_NBPLANESOUT, buf ) ;

    buf[0] = 0 ;
    if ( caps->Flags & LDVF_STDFORMAT ) strcat( buf, msg[MSG_LDVSTDFMT] ) ;
    if ( caps->Flags & LDVF_ATARIFORMAT ) strcat( buf, msg[MSG_LDVATARIFMT] ) ;
    if ( caps->Flags & LDVF_SPECFORMAT ) strcat( buf, msg[MSG_LDVSPECFMT] ) ;
    write_text( bobj, LDVD_FORMAT, buf ) ;

    buf[0] = 0 ;
    if ( caps->Flags & LDVF_SUPPORTPREVIEW ) strcat( buf, msg[MSG_LDVSUPPREV] ) ;
    if ( caps->Flags & LDVF_SUPPORTPROG ) strcat( buf, msg[MSG_LDVSUPPROG] ) ;
    write_text( bobj, LDVD_SUPPORT, buf ) ;

    if ( caps->Flags & LDVF_REALTIMEPARAMS )
      bobj[LDVD_RTPREVIEW].ob_flags &= ~HIDETREE ;
    else
      bobj[LDVD_RTPREVIEW].ob_flags |= HIDETREE ;

    if ( caps->Flags & LDVF_OPINPLACE )
      bobj[LDVD_OPINPLACE].ob_flags &= ~HIDETREE ;
    else
      bobj[LDVD_OPINPLACE].ob_flags |= HIDETREE ;

    if ( ( caps->NbPlanes <= 8 ) && ( caps->Flags & LDVF_AFFECTPALETTE ) )
      bobj[LDVD_AFFECTPAL].ob_flags &= ~HIDETREE ;
    else
      bobj[LDVD_AFFECTPAL].ob_flags |= HIDETREE ;

    if ( caps->Flags & LDVF_SUPPORTCANCEL )
      bobj[LDVD_CANCEL].ob_flags &= ~HIDETREE ;
    else
      bobj[LDVD_CANCEL].ob_flags |= HIDETREE ;
  }
  else
  {
    write_text( bobj, LDVD_NBPLANESOUT, "~" ) ;
    write_text( bobj, LDVD_FORMAT, "~" ) ;
    write_text( bobj, LDVD_SUPPORT, "~" ) ;
    bobj[LDVD_AFFECTPAL].ob_flags |= HIDETREE ;
    caps = LDVGetNPlanesCaps( wext->LdvModule, 1 ) ;
    if ( caps == NULL ) caps = LDVGetNPlanesCaps( wext->LdvModule, 2 ) ;
    if ( caps == NULL ) caps = LDVGetNPlanesCaps( wext->LdvModule, 4 ) ;
    if ( caps == NULL ) caps = LDVGetNPlanesCaps( wext->LdvModule, 8 ) ;
    if ( caps == NULL ) caps = LDVGetNPlanesCaps( wext->LdvModule, 16 ) ;
    if ( caps == NULL ) caps = LDVGetNPlanesCaps( wext->LdvModule, 24 ) ;
    if ( caps == NULL ) caps = LDVGetNPlanesCaps( wext->LdvModule, 32 ) ;

    if ( caps == NULL ) bobj[LDVD_NPLANES].ob_state |= DISABLED ;
  }

  if ( display )
  {
    xobjc_draw( wnd->window_handle, bobj, LDVD_GROUPDET ) ;
    xobjc_draw( wnd->window_handle, bobj, LDVD_TFEATURES ) ;
  }
}