view nt/ddeclient.c @ 97833:6e54941ad0d7

Include font.h. (it_props): Delete the entry for Qauto_composed. (init_iterator): Initialize it->cmp_it.id to -1. (compute_stop_pos): Call composition_compute_stop_pos. (face_before_or_after_it_pos): Adjusted for the change of struct it. (handle_auto_composed_prop): Delete it. (handle_composition_prop): Handle only static composition. (next_overlay_string): Remove it->method == GET_FROM_COMPOSITION from xassert. Initialize it->cmp_it.stop_pos. (push_it): Adjusted for the change of struct it. (pop_it): Likewise. (get_next_element): Delete next_element_from_composition. (CHAR_COMPOSED_P): New macro. (get_next_display_element): For automatic composition, get a face from the font in the glyph-string. (set_iterator_to_next): For GET_FROM_BUFFER and GET_FROM_STRING, check composition by it->cmp_it.id. Delete GET_FROM_COMPOSITION case. (next_element_from_string): Check if the character at the current position is composed by CHAR_COMPOSED_P. (next_element_from_buffer): Likewise. (next_element_from_composition): Adjusted for the change of struct it. Update it->cmp_it. (dump_glyph): Adjusted for the change of struct glyph. (fill_composite_glyph_string): Adjusted for the change of struct it and struct glyph. Don't handle automatic composition here. (fill_gstring_glyph_string): New function. (x_get_glyph_overhangs): Handle automatic composition. (BUILD_COMPOSITE_GLYPH_STRING): Adjusted for the change of struct glyph. (BUILD_GSTRING_GLYPH_STRING): New macro. (BUILD_GLYPH_STRINGS): Call BUILD_GSTRING_GLYPH_STRING for automatic composition. (append_composite_glyph): Adjusted for the change of struct it and struct glyph. (x_produce_glyphs): Adjusted for the change of struct it.
author Kenichi Handa <handa@m17n.org>
date Fri, 29 Aug 2008 07:58:08 +0000
parents 188974bfdea0
children aeceb2460b39
line wrap: on
line source

/* Simple client interface to DDE servers.
   Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005,
      2006, 2007, 2008  Free Software Foundation, Inc.

This file is part of GNU Emacs.

GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */

#include <windows.h>
#include <ddeml.h>
#include <stdlib.h>
#include <stdio.h>

HDDEDATA CALLBACK
DdeCallback (UINT uType, UINT uFmt, HCONV hconv,
	     HSZ hsz1, HSZ hsz2, HDDEDATA hdata,
	     DWORD dwData1, DWORD dwData2)
{
  return ((HDDEDATA) NULL);
}

#define DdeCommand(str) 	\
	DdeClientTransaction (str, strlen (str)+1, HConversation, (HSZ)NULL, \
		              CF_TEXT, XTYP_EXECUTE, 30000, NULL)

int
main (argc, argv)
     int argc;
     char *argv[];
{
  DWORD idDde = 0;
  HCONV HConversation;
  HSZ   Server;
  HSZ   Topic = 0;
  char  command[1024];

  if (argc < 2)
    {
      fprintf (stderr, "usage: ddeclient server [topic]\n");
      exit (1);
    }

  DdeInitialize (&idDde, (PFNCALLBACK)DdeCallback, APPCMD_CLIENTONLY, 0);

  Server = DdeCreateStringHandle (idDde, argv[1], CP_WINANSI);
  if (argc > 2)
    Topic = DdeCreateStringHandle (idDde, argv[2], CP_WINANSI);

  HConversation = DdeConnect (idDde, Server, Topic, NULL);
  if (HConversation != 0)
    {
      while (fgets (command, sizeof(command), stdin) != NULL)
	DdeCommand (command);

      DdeDisconnect (HConversation);
    }

  DdeFreeStringHandle (idDde, Server);
  if (Topic)
    DdeFreeStringHandle (idDde, Topic);
  DdeUninitialize (idDde);

  return (0);
}

/* arch-tag: 360d7a99-2cae-447e-8d06-41ca41987e30
   (do not change this comment) */