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

📄 yxkey_g.class

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 CLASS
字号:
//				yxkey_g
//
//  class that holds and draws a key view for an yxview class or a seriesstyle.

*! version 1.0.4  05feb2005

version 8

class {
	pos	= .compass2dir.new , style(center)
	xsz	= .gsize.new , style(0)
	ysz	= .gsize.new , style(0)
	force_fixed = 0					// force fixed size

	// .view  -- a reference to an view, is Declared
	// .style -- a style for the key (only one of .view or .style exist)

} , inherit(subview)


//-----------------------------------------------------------------------------
program new

	syntax , [ View(string) Style(string) Position(string) ]

	if `"`view'"' != `""' {

		.Declare view = .`view'.ref
	}

	if `"`style'"' != `""' {
		if `=index(`"`style'"', "__key")' {
			.Declare style = .`style'.ref
		}
		else {
			.Declare style = .seriesstyle.new , style(`style')
		}
	}

	if `"`position'"' != `""' {
		.pos.setstyle, style(`position')
	}

	if `.is_scatter' {
		.xsz.setstyle, style(`.view.style.marker.size.gmval')
		.ysz.setstyle, style(`.view.style.marker.size.gmval')
	}
end


//-----------------------------------------------------------------------------

program set
	syntax [ , XSize(real -1) YSize(real -1) POSition(string) FORCE ]

	if "`force'" == "force" {
		.force_fixed = 1
	}

	if ("`position'" != "")  .pos.setstyle, style(`position')

	if `ysize' != -1 {
		if !`.is_scatter' | "`force'"!="" {
			.ysz.setstyle, style(`ysize')
		}
		if "`.view.type.stylename'" == "sunflower" {
			.xsz.setstyle, style(`ysize')
		}
	}

	if `xsize' != -1 {
		if ("`.view.type.stylename'" != "sunflower" &		///
		    !`.is_scatter')  | "`force'" != "" {
			.xsz.setstyle, style(`xsize')
		}
	}


end


program set_yxsize_dotsize
	if `.is_scatter' {
		.xsz.setstyle, style(`.style.marker.size.gmval')
		.ysz.setstyle, style(`.style.marker.size.gmval')
	}
end

program define is_scatter
	local viewtype `.view.type.stylename'
	class exit = (index("`viewtype'", "scatter") > 0)
end


//-----------------------------------------------------------------------------
//  Since we are a subview and not a full view, we must provide our own extent 
//  program.

program define extent
	args ord

	class exit = cond("`ord'"=="x" , 0`.xsz.gmval' , 0`.ysz.gmval')
end

program define xsize
	class exit = `.xsz.gmval'
end

program define ysize
	class exit = `.ysz.gmval'
end


// ---------------------------------------------------------------------------
//  Use compass_draw to allow alignment of the sized legend in an area that
//  is possibly larger than the size of the legend.

program draw

	syntax [, * ]

	.compass_draw , align(pos) drawpgm(realdraw) `options'
end


//-----------------------------------------------------------------------------

program realdraw
	syntax [ , XSize(real -1) YSize(real -1) ]

	if 0`.force_fixed' & `xsize' > `.xsz.gmval' {
		local xsize = `.xsz.gmval'
	}

	capture .draw_`.view.type.stylename' `xsize' `ysize'
	if _rc {
		di in green "note, no key available for plot type "	///
			"`.view.type.stylename'"
	}
	gdi update
end


//----------------------------------------------------------------------------
program draw_scatter
	args xsize ysize

	.draw_symbol `._sym_x `xsize'' `._sym_y `ysize''
end


//----------------------------------------------------------------------------
program draw_line
	args xsize ysize substyle			// substyle optional

	local style = cond("`.Local.style.isa'"=="" , "view.style", "style")

	if "`.`style'.connect.stylename'" == "none" {
		exit
	}

	if "`substyle'" == "" {
		local style `style'.line
	}
	else {
		local style `style'.`substyle'
	}

	.`style'.setgdifull

	gdi line 0 `._sym_y `ysize'' 0`xsize' `._sym_y `ysize''
end


//----------------------------------------------------------------------------
program draw_connected
	args xsize ysize substyle			// substyle optional

	.draw_line `xsize' `ysize' `substyle'
	.draw_symbol `=`xsize'/2' `._sym_y `ysize''
end


//----------------------------------------------------------------------------
program draw_symbol
	args x y 

	local style = cond("`.Local.style.isa'"=="" , "view.style", "style")

	if "`.`style'.marker.backsymbol.setting'" != "none" {
		.`style'.marker.setgdifull,  backing
		gdi point `x' `y'
	}

	if "`.`style'.marker.symbol.setting'" != "none" {
		.`style'.marker.setgdifull
		gdi point `x' `y'
	}
end


//----------------------------------------------------------------------------
program draw_spike
	args xsize ysize
	.draw_line `xsize' `ysize' "area.linestyle"
end


//----------------------------------------------------------------------------
program draw_dropline
	args xsize ysize

	.draw_line `xsize' `ysize' "area.linestyle"
	.draw_symbol `=`xsize'' `._sym_y `ysize''
end


//----------------------------------------------------------------------------
program draw_bar
	args xsize ysize

	local style = cond("`.Local.style.isa'"=="" , "view.style", "style")

	.`style'.area.setgdifull

	local pat `.`style'.area.linestyle.pattern.stylename'
	local has_pat = ! ("`pat'" == "solid" | "`pat'" == "blank")

	if 0`has_pat' {
		._draw_pat_rect 0 0 `xsize' `ysize' `style'.area
	}
	else {
		gdi rectangle 0 0 `xsize' `ysize'
	}
end

program _draw_pat_rect
	args x0 y0 x1 y1 areastyle

	.`areastyle'.setlineasareafull
	gdi rectangle `x0' `y0' `x1' `y1'
	.`areastyle'.setlinestylefull
	_gr_drawrect `x0' `y0' `x1' `y1'
end


//----------------------------------------------------------------------------
program draw_pie
	args xsize ysize

	local style = cond("`.Local.style.isa'"=="" , "view.style", "style")
	.`style'.setgdifull

	if ("`.`style'.pie_linestyle.color.stylename'" == "none")	///
	      .`style'.shadestyle.setgdipenfull , linewidth(.000001) nointensity
	else  .`style'.pie_linestyle.setgdifull

	gdi rectangle 0 0 `xsize' `ysize'
end


//----------------------------------------------------------------------------
program draw_dot
	args xsize ysize

	.draw_symbol `=`xsize'/2' `._sym_y `ysize''
end


//----------------------------------------------------------------------------
program draw_area
	.draw_bar `0'
end

//----------------------------------------------------------------------------

program define _sym_x
	args xsize 

	local style = cond("`.Local.style.isa'"=="" , "view.style", "style")
	class exit = cond(`.pos.iseast' ,				 ///
			`xsize' - `.`style'.marker.size.gmval' / 2 ,     ///
			cond(`.pos.iswest' , 				 ///
			     `.`style'.marker.size.gmval' / 2 ,	         ///
			     `xsize' / 2))
end

program define _sym_y
	args ysize 

	local style = cond("`.Local.style.isa'"=="" , "view.style", "style")
	class exit= cond(`.pos.issouth' , 				   ///
			`.`style'.marker.size.gmval' / 2 ,		   ///
			cond(`.pos.isnorth' , 				   ///
			     `ysize' - `.`style'.marker.size.gmval' / 2 ,  ///
			     `ysize' / 2))
end

⌨️ 快捷键说明

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