⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gtkclock_c.html

📁 时钟程序
💻 HTML
📖 第 1 页 / 共 3 页
字号:

    <font color=#884455><b>if</b></font> <font color=#333399>(</font>GTK_WIDGET_DRAWABLE <font color=#333399>(</font>widget<font color=#333399>)</font><font color=#333399>)</font>
    <font color=#333399>{</font>
		clock <font color=#333399>=</font> GTK_CLOCK <font color=#333399>(</font>widget<font color=#333399>)</font><font color=#333399>;</font>

		alloc_width <font color=#333399>=</font> widget<font color=#333399>-</font><font color=#333399>&gt;</font>allocation<font color=#333399>.</font>width <font color=#333399>-</font> <font color="#000000"><b>1</b></font><font color=#333399>;</font>
		alloc_height <font color=#333399>=</font> widget<font color=#333399>-</font><font color=#333399>&gt;</font>allocation<font color=#333399>.</font>height <font color=#333399>-</font> <font color="#000000"><b>1</b></font><font color=#333399>;</font>

		gdk_window_clear_area <font color=#333399>(</font>widget<font color=#333399>-</font><font color=#333399>&gt;</font>window<font color=#333399>,</font> <font color="#000000"><b>0</b></font><font color=#333399>,</font> <font color="#000000"><b>0</b></font><font color=#333399>,</font> alloc_width<font color=#333399>,</font> alloc_height<font color=#333399>)</font><font color=#333399>;</font>

		gdk_color_parse<font color=#333399>(</font><font color="#0000EE"><b>"Red"</b></font><font color=#333399>,</font> <font color=#333399>&</font>colors[<font color="#000000"><b>0</b></font>]<font color=#333399>)</font><font color=#333399>;</font>
		gdk_color_parse<font color=#333399>(</font><font color="#0000EE"><b>"DarkGreen"</b></font><font color=#333399>,</font> <font color=#333399>&</font>colors[<font color="#000000"><b>1</b></font>]<font color=#333399>)</font><font color=#333399>;</font>
		gdk_color_parse<font color=#333399>(</font><font color="#0000EE"><b>"RoyalBlue"</b></font><font color=#333399>,</font> <font color=#333399>&</font>colors[<font color="#000000"><b>2</b></font>]<font color=#333399>)</font><font color=#333399>;</font>
		gdk_color_parse<font color=#333399>(</font><font color="#0000EE"><b>"Black"</b></font><font color=#333399>,</font> <font color=#333399>&</font>colors[<font color="#000000"><b>3</b></font>]<font color=#333399>)</font><font color=#333399>;</font>

		min <font color=#333399>=</font> clock<font color=#333399>-</font><font color=#333399>&gt;</font>min<font color=#333399>;</font> hour <font color=#333399>=</font> clock<font color=#333399>-</font><font color=#333399>&gt;</font>hour<font color=#333399>;</font> sec <font color=#333399>=</font> clock<font color=#333399>-</font><font color=#333399>&gt;</font>sec<font color=#333399>;</font>
		max_radius <font color=#333399>=</font> <font color=#333399>(</font>alloc_width <font color=#333399>&lt;</font> alloc_height<font color=#333399>)</font><font color=#333399>?</font> <font color=#333399>(</font>alloc_width<font color=#333399>/</font><font color="#000000"><b>2</b></font><font color=#333399>)</font> <font color=#333399>:</font> <font color=#333399>(</font>alloc_height<font color=#333399>/</font><font color="#000000"><b>2</b></font><font color=#333399>)</font><font color=#333399>;</font>
		<font color=#884455><b>for</b></font> <font color=#333399>(</font>loop1<font color=#333399>=</font><font color="#000000"><b>0</b></font><font color=#333399>;</font> loop1<font color=#333399>&lt;</font><font color="#000000"><b>60</b></font><font color=#333399>;</font> loop1<font color=#333399>+</font><font color=#333399>=</font><font color="#000000"><b>5</b></font><font color=#333399>)</font>
        <font color=#333399>{</font>
			gtk_clock_obtain_coordinates <font color=#333399>(</font><font color=#333399>&</font>xc<font color=#333399>,</font> <font color=#333399>&</font>yc<font color=#333399>,</font> max_radius<font color=#333399>,</font> max_radius<font color=#333399>,</font> loop1<font color=#333399>,</font> max_radius<font color=#333399>-</font><font color="#000000"><b>10</b></font><font color=#333399>,</font> <font color="#000000"><b>60</b></font><font color=#333399>)</font><font color=#333399>;</font>
            gdk_gc_set_line_attributes      <font color=#333399>(</font>clock_gc<font color=#333399>,</font> <font color="#000000"><b>10</b></font><font color=#333399>,</font> GDK_LINE_SOLID<font color=#333399>,</font> <font color="#000000"><b>0</b></font><font color=#333399>,</font> <font color="#000000"><b>0</b></font><font color=#333399>)</font><font color=#333399>;</font>
			gdk_draw_line <font color=#333399>(</font>widget<font color=#333399>-</font><font color=#333399>&gt;</font>window<font color=#333399>,</font> widget<font color=#333399>-</font><font color=#333399>&gt;</font>style<font color=#333399>-</font><font color=#333399>&gt;</font>black_gc<font color=#333399>,</font> xc<font color=#333399>,</font> yc<font color=#333399>,</font>xc<font color=#333399>+</font><font color="#000000"><b>1</b></font><font color=#333399>,</font>yc<font color=#333399>+</font><font color="#000000"><b>1</b></font><font color=#333399>)</font><font color=#333399>;</font>
			gdk_draw_line <font color=#333399>(</font>widget<font color=#333399>-</font><font color=#333399>&gt;</font>window<font color=#333399>,</font> widget<font color=#333399>-</font><font color=#333399>&gt;</font>style<font color=#333399>-</font><font color=#333399>&gt;</font>black_gc<font color=#333399>,</font> xc<font color=#333399>+</font><font color="#000000"><b>1</b></font><font color=#333399>,</font> yc<font color=#333399>,</font>xc<font color=#333399>,</font>yc<font color=#333399>+</font><font color="#000000"><b>1</b></font><font color=#333399>)</font><font color=#333399>;</font>
        <font color=#333399>}</font>
        
        gdk_gc_set_line_attributes      <font color=#333399>(</font>clock_gc<font color=#333399>,</font> <font color="#000000"><b>2</b></font><font color=#333399>,</font> GDK_LINE_SOLID<font color=#333399>,</font> <font color="#000000"><b>0</b></font><font color=#333399>,</font> <font color="#000000"><b>0</b></font><font color=#333399>)</font><font color=#333399>;</font>
        <font color="#007766">/* Obtain coordinates for minute and draw a line from center to that point */</font>
		gtk_clock_obtain_coordinates <font color=#333399>(</font><font color=#333399>&</font>xc<font color=#333399>,</font> <font color=#333399>&</font>yc<font color=#333399>,</font> max_radius<font color=#333399>,</font> max_radius<font color=#333399>,</font> min<font color=#333399>,</font> max_radius<font color=#333399>,</font> <font color="#000000"><b>60</b></font><font color=#333399>)</font><font color=#333399>;</font>
        gdk_colormap_alloc_color <font color=#333399>(</font>gdk_colormap_get_system<font color=#333399>(</font><font color=#333399>)</font><font color=#333399>,</font> <font color=#333399>&</font>colors[<font color="#000000"><b>0</b></font>]<font color=#333399>,</font> FALSE<font color=#333399>,</font> TRUE<font color=#333399>)</font><font color=#333399>;</font>
        gdk_gc_set_foreground <font color=#333399>(</font>clock_gc<font color=#333399>,</font> colors<font color=#333399>+</font><font color="#000000"><b>0</b></font><font color=#333399>)</font><font color=#333399>;</font>          <font color="#007766">/* Red */</font>
        gdk_draw_line <font color=#333399>(</font>widget<font color=#333399>-</font><font color=#333399>&gt;</font>window<font color=#333399>,</font> clock_gc<font color=#333399>,</font> xc<font color=#333399>,</font> yc<font color=#333399>,</font> max_radius<font color=#333399>,</font> max_radius<font color=#333399>)</font><font color=#333399>;</font>

        <font color="#007766">/* Obtain coordinates for hour and draw a line from center to that point */</font>
        gtk_clock_obtain_coordinates <font color=#333399>(</font><font color=#333399>&</font>xc<font color=#333399>,</font> <font color=#333399>&</font>yc<font color=#333399>,</font> max_radius<font color=#333399>,</font> max_radius<font color=#333399>,</font> <font color=#333399>(</font>hour<font color=#333399>!</font><font color=#333399>=</font><font color="#000000"><b>12</b></font><font color=#333399>)</font><font color=#333399>?</font>hour<font color=#333399>*</font><font color="#000000"><b>60</b></font><font color=#333399>+</font>min<font color=#333399>:</font>min<font color=#333399>,</font> max_radius<font color=#333399>*</font><font color="#000000"><b>0.65</b></font><font color=#333399>,</font> <font color="#000000"><b>12</b></font><font color=#333399>*</font><font color="#000000"><b>60</b></font><font color=#333399>)</font><font color=#333399>;</font>
        gdk_colormap_alloc_color <font color=#333399>(</font>gdk_colormap_get_system<font color=#333399>(</font><font color=#333399>)</font><font color=#333399>,</font> <font color=#333399>&</font>colors[<font color="#000000"><b>1</b></font>]<font color=#333399>,</font> FALSE<font color=#333399>,</font> TRUE<font color=#333399>)</font><font color=#333399>;</font>
        gdk_gc_set_foreground <font color=#333399>(</font>clock_gc<font color=#333399>,</font> colors<font color=#333399>+</font><font color="#000000"><b>1</b></font><font color=#333399>)</font><font color=#333399>;</font>          <font color="#007766">/* Green */</font>
        gdk_draw_line <font color=#333399>(</font>widget<font color=#333399>-</font><font color=#333399>&gt;</font>window<font color=#333399>,</font> clock_gc<font color=#333399>,</font> xc<font color=#333399>,</font> yc<font color=#333399>,</font> max_radius<font color=#333399>,</font> max_radius<font color=#333399>)</font><font color=#333399>;</font>

        <font color="#007766">/* Obtain coordinates for seconds and draw a line from center to that point */</font>
        gtk_clock_obtain_coordinates <font color=#333399>(</font><font color=#333399>&</font>xc<font color=#333399>,</font> <font color=#333399>&</font>yc<font color=#333399>,</font> max_radius<font color=#333399>,</font> max_radius<font color=#333399>,</font> sec<font color=#333399>,</font> max_radius<font color=#333399>*</font><font color="#000000"><b>.85</b></font><font color=#333399>,</font> <font color="#000000"><b>60</b></font><font color=#333399>)</font><font color=#333399>;</font>
        gdk_colormap_alloc_color <font color=#333399>(</font>gdk_colormap_get_system<font color=#333399>(</font><font color=#333399>)</font><font color=#333399>,</font> <font color=#333399>&</font>colors[<font color="#000000"><b>2</b></font>]<font color=#333399>,</font> FALSE<font color=#333399>,</font> TRUE<font color=#333399>)</font><font color=#333399>;</font>
        gdk_gc_set_foreground <font color=#333399>(</font>clock_gc<font color=#333399>,</font> colors<font color=#333399>+</font><font color="#000000"><b>2</b></font><font color=#333399>)</font><font color=#333399>;</font>          <font color="#007766">/* Blue */</font>
        gdk_draw_line <font color=#333399>(</font>widget<font color=#333399>-</font><font color=#333399>&gt;</font>window<font color=#333399>,</font> clock_gc<font color=#333399>,</font> xc<font color=#333399>,</font> yc<font color=#333399>,</font> max_radius<font color=#333399>,</font> max_radius<font color=#333399>)</font><font color=#333399>;</font>
    <font color=#333399>}</font>
<font color=#333399>}</font>


<font color="#007766">/* ----------------------------------------------------------------------------------*/</font>
<font color="#007766">/* UTILITY FUNCTIONS */</font>

<font color=#333399>/</font><font color=#333399>/</font> TODO<font color=#333399>:</font> replace this function with a better one<font color=#333399>.</font> Due to lack of time<font color=#333399>,</font>
<font color=#333399>/</font><font color=#333399>/</font> this one is still buggy<font color=#333399>.</font>
<font color=#AA0000><b>int</b></font> get_current_time <font color=#333399>(</font><font color=#AA0000><b>int</b></font> <font color=#333399>*</font>hr<font color=#333399>,</font> <font color=#AA0000><b>int</b></font> <font color=#333399>*</font>mn<font color=#333399>,</font> <font color=#AA0000><b>int</b></font> <font color=#333399>*</font>sc<font color=#333399>)</font>
<font color=#333399>{</font>
     <font color=#AA0000><b>long</b></font> hour <font color=#333399>=</font> <font color=#333399>*</font>hr<font color=#333399>,</font> min <font color=#333399>=</font>	 <font color=#333399>*</font>mn<font color=#333399>,</font> sec<font color=#333399>=</font>   <font color=#333399>*</font>sc<font color=#333399>;</font>

     hour <font color=#333399>=</font> time<font color=#333399>(</font>NULL<font color=#333399>)</font><font color=#333399>;</font>
     min<font color=#333399>=</font>hour<font color=#333399>;</font> sec <font color=#333399>=</font> hour<font color=#333399>;</font> sec<font color=#333399>=</font>hour<font color=#333399>%</font><font color="#000000"><b>60</b></font><font color=#333399>;</font>
     min<font color=#333399>=</font>min<font color=#333399>-</font>min<font color=#333399>%</font><font color="#000000"><b>60</b></font><font color=#333399>;</font> min<font color=#333399>=</font>min<font color=#333399>/</font><font color="#000000"><b>60</b></font><font color=#333399>;</font> min<font color=#333399>=</font>min<font color=#333399>%</font><font color="#000000"><b>60</b></font><font color=#333399>;</font>
     hour<font color=#333399>=</font>hour<font color=#333399>/</font><font color=#333399>(</font><font color="#000000"><b>60</b></font><font color=#333399>*</font><font color="#000000"><b>60</b></font><font color=#333399>)</font><font color=#333399>;</font> hour<font color=#333399>=</font>hour<font color=#333399>%</font><font color="#000000"><b>12</b></font><font color=#333399>;</font> hour <font color=#333399>=</font> <font color=#333399>(</font>hour<font color=#333399>+</font><font color="#000000"><b>6</b></font><font color=#333399>)</font><font color=#333399>%</font><font color="#000000"><b>12</b></font><font color=#333399>;</font>
     <font color=#884455><b>if</b></font> <font color=#333399>(</font>min<font color=#333399>&lt;</font><font color="#000000"><b>30</b></font><font color=#333399>)</font>  min <font color=#333399>=</font> min<font color=#333399>+</font><font color="#000000"><b>30</b></font><font color=#333399>;</font>
     <font color=#884455><b>else</b></font> min <font color=#333399>=</font> min<font color=#333399>-</font><font color="#000000"><b>30</b></font><font color=#333399>;</font>
     <font color=#884455><b>if</b></font><font color=#333399>(</font><font color=#333399>!</font>hour<font color=#333399>)</font> hour<font color=#333399>=</font><font color="#000000"><b>12</b></font><font color=#333399>;</font> <font color=#884455><b>if</b></font> <font color=#333399>(</font>min<font color=#333399>&gt;</font><font color="#000000"><b>30</b></font><font color=#333399>)</font>  hour<font color=#333399>-</font><font color=#333399>-</font><font color=#333399>;</font> <font color=#884455><b>if</b></font><font color=#333399>(</font>hour<font color=#333399>&lt;</font><font color="#000000"><b>1</b></font><font color=#333399>)</font> hour<font color=#333399>=</font><font color="#000000"><b>12</b></font><font color=#333399>;</font>

     <font color=#333399>*</font>sc <font color=#333399>=</font> sec<font color=#333399>;</font> <font color=#333399>*</font>mn <font color=#333399>=</font> min<font color=#333399>;</font> <font color=#333399>*</font>hr <font color=#333399>=</font> hour<font color=#333399>;</font>
     <font color=#884455><b>return</b></font> <font color="#000000"><b>1</b></font><font color=#333399>;</font>
<font color=#333399>}</font>

<font color=#AA0000><b>void</b></font> gtk_clock_obtain_coordinates <font color=#333399>(</font><font color=#AA0000><b>int</b></font> <font color=#333399>*</font>xcood<font color=#333399>,</font> <font color=#AA0000><b>int</b></font> <font color=#333399>*</font>ycood<font color=#333399>,</font> <font color=#AA0000><b>int</b></font> h<font color=#333399>,</font> <font color=#AA0000><b>int</b></font> k<font color=#333399>,</font> <font color=#AA0000><b>int</b></font> value<font color=#333399>,</font> <font color=#AA0000><b>int</b></font> max_radius<font color=#333399>,</font> <font color=#AA0000><b>int</b></font> max_val<font color=#333399>)</font>
<font color=#333399>{</font>
   	<font color=#AA0000><b>int</b></font> yc<font color=#333399>=</font><font color=#333399>*</font>ycood<font color=#333399>,</font> xc<font color=#333399>=</font><font color=#333399>*</font>xcood<font color=#333399>,</font> <font color="#000000"><b>f</b></font><font color=#333399>;</font>
    <font color=#AA0000><b>float</b></font> t<font color=#333399>=</font><font color="#000000"><b>0</b></font><font color=#333399>,</font> s<font color=#333399>=</font><font color="#000000"><b>0</b></font><font color=#333399>;</font>

   	t<font color=#333399>=</font><font color=#333399>(</font><font color=#AA0000><b>float</b></font><font color=#333399>)</font><font color=#333399>(</font>value<font color=#333399>*</font><font color="#000000"><b>360.0</b></font><font color=#333399>/</font><font color=#333399>(</font><font color=#AA0000><b>float</b></font><font color=#333399>)</font>max_val<font color=#333399>)</font>  <font color=#333399>*</font> <font color="#000000"><b>3.14159</b></font><font color=#333399>/</font><font color="#000000"><b>180</b></font><font color=#333399>;</font>
   	s<font color=#333399>=</font>sin<font color=#333399>(</font>t<font color=#333399>/</font><font color="#000000"><b>2</b></font><font color=#333399>)</font><font color=#333399>;</font>
   	yc<font color=#333399>=</font><font color=#333399>(</font><font color=#AA0000><b>int</b></font><font color=#333399>)</font><font color=#333399>(</font>k<font color=#333399>+</font> <font color="#000000"><b>2</b></font><font color=#333399>*</font>max_radius<font color=#333399>*</font><font color=#333399>(</font>pow<font color=#333399>(</font>s<font color=#333399>,</font><font color="#000000"><b>2</b></font><font color=#333399>)</font><font color=#333399>)</font> <font color=#333399>-</font>max_radius<font color=#333399>)</font><font color=#333399>;</font>
   	<font color="#000000"><b>f</b></font><font color=#333399>=</font><font color=#333399>-</font>max_radius<font color=#333399>*</font>max_radius<font color=#333399>+</font>h<font color=#333399>*</font>h<font color=#333399>+</font><font color=#333399>(</font>yc<font color=#333399>-</font>k<font color=#333399>)</font><font color=#333399>*</font><font color=#333399>(</font>yc<font color=#333399>-</font>k<font color=#333399>)</font><font color=#333399>;</font>
    <font color=#884455><b>if</b></font> <font color=#333399>(</font>value<font color=#333399>&lt;</font>max_val<font color=#333399>/</font><font color="#000000"><b>2</b></font><font color=#333399>)</font>
   		xc<font color=#333399>=</font>h <font color=#333399>+</font> <font color=#333399>(</font><font color=#AA0000><b>float</b></font><font color=#333399>)</font><font color=#333399>(</font>pow<font color=#333399>(</font>h<font color=#333399>*</font>h<font color=#333399>-</font><font color="#000000"><b>f</b></font><font color=#333399>,</font> <font color="#000000"><b>.5</b></font><font color=#333399>)</font><font color=#333399>)</font><font color=#333399>;</font>
    <font color=#884455><b>else</b></font>
   		xc<font color=#333399>=</font>h <font color=#333399>-</font> <font color=#333399>(</font><font color=#AA0000><b>float</b></font><font color=#333399>)</font><font color=#333399>(</font>pow<font color=#333399>(</font>h<font color=#333399>*</font>h<font color=#333399>-</font><font color="#000000"><b>f</b></font><font color=#333399>,</font> <font color="#000000"><b>.5</b></font><font color=#333399>)</font><font color=#333399>)</font><font color=#333399>;</font>
    <font color=#333399>*</font>ycood<font color=#333399>=</font>yc<font color=#333399>;</font> <font color=#333399>*</font>xcood<font color=#333399>=</font>xc<font color=#333399>;</font>
<font color=#333399>}</font>

</pre></font><p></p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -