�ЂƂO�̋L��
Xcode�v���O���~���O���� - 3/20 01:10
�ЂƂ�̋L��
�R�R�A�}���� #02 - �����t���̕������`�悷�� ���̂Q - 3/25 01:16
3��22���i���j
�R�R�A�}���� #01 - �����t���̕������`�悷��
CV�F�֓���a���l�����ꂽ�R�̉��ɂ��鏬���ȃT�C�g�B�����ɂ͂䂩��P���u�ȊǗ��l�ƁA����n�b�N�����̊Ǘ��l�ƁACocoa �̕����n�߂��Ǘ��l������̂ł��i���Ȃ��s���ۂ��j�B
�Ƃ����킯�ŁACocoa �ɂ�� HackENT �̊J����ʂ��āA������������N���̖��ɗ���������Ȃ�������A�ė��p�ł������Ȃ��̂��܂Ƃ߂Ă����w�R�R�A�}���فx�ł��B
����ڂ̍�����J���I�P�ɂ͕K�{�ȉ���蕶���̏������ł��B
������ƋC���������߂ɁA����ȃl�^��I��ł݂܂����B
�@
����Ȋ����ɉ���肳�ꂽ�����������̂͌��\��V�Ȃ�ł���B
-(void) writeBorderString: (NSString *) string
AtPoint: (NSPoint) point
withAttribute: (NSMutableDictionary *) fontAttribute
andBorderAttribute: (NSMutableDictionary *) fontBorderAttribute
borderWidth: (float) width
/*
string�F�`�悷�镶����
point�F�`��J�n�ʒu
fontAttribute�F�h��Ԃ��̑����iNSFontAttributeName�ANSForegroundColorAttributeName�̂݁j
fontBorderAttribute�F�����̑����iNSForegroundColorAttributeName�̂݁j
width�F�����̕�
*/
{
NSBezierPath *path = [[NSBezierPath bezierPath] autorelease];
NSTextStorage *textStorage = [[[NSTextStorage alloc] initWithString:string
attributes:fontAttribute] autorelease];
NSLayoutManager *layoutManager = [[[NSLayoutManager alloc] init] autorelease];
NSTextContainer *textContainer = [[[NSTextContainer alloc] init] autorelease];
NSRange range;
float x = point.x;
float y = point.y;
unsigned glyphLength;
/* NSLayoutManager�i�O���t�̃��C�A�E�g����ѕ`��A�����j�̏��� */
[layoutManager addTextContainer:textContainer];
/* NSTextStorage�i�������ێ����Ă���j�ɁA���C�A�E�g��K�p���� */
[textStorage addLayoutManager:layoutManager];
/* NSTextContainer�i�e�L�X�g�̕`��͈́j */
range = [layoutManager glyphRangeForTextContainer:textContainer];
/* �O���t�ԍ��̔z����쐬 */
NSGlyph glyph[range.length];
glyphLength = [layoutManager getGlyphs:glyph range:range];
/* �����̕`�� */
/* �x�W�F�p�X�̊J�n�ʒu��ݒ� */
/*�idescender�Fg,j,p,q,y�Ȃǃx�[�X���C����艺�ɐL�тĂ��镔��������j */
[path moveToPoint:NSMakePoint(x,y-[[fontAttribute objectForKey:NSFontAttributeName] descender])];
/* �����̑�����ݒ� */
[path setLineWidth:borderWidth];
/* �����̊p�̊ۂ� */
[path setLineJoinStyle:NSRoundLineJoinStyle];
/* �����̐F��ݒ� */
[[fontBorderAttribute objectForKey:NSForegroundColorAttributeName] set];
/* �����O���t�ԍ��̔z��x�W�F�p�X���쐬 */
[path appendBezierPathWithGlyphs:glyph count:glyphLength
inFont:[fontAttribute objectForKey:NSFontAttributeName]];
/* �x�W�F�p�X��`�� */
[path stroke];
/* ���g�̓h��Ԃ� */
/* �x�W�F�p�X�̊J�n�ʒu���ēx�ݒ�i�y���ʒu��߂��j */
[path moveToPoint:NSMakePoint(x,y-[[fontAttribute objectForKey:NSFontAttributeName] descender])];
/* �h��Ԃ��̐F��ݒ� */
[[fontAttribute objectForKey:NSForegroundColorAttributeName] set];
/* �x�W�F�p�X����h��Ԃ� */
[path fill];
}
�L���b�`�[�ȃl�^��I�����e���d�����Ȃ��Ă��܂��܂����BNSTextStorage �ɑ����t����������i�[���āANSLayoutManager �ł��̕�������O���t�i�����̗֊s�Ƃł��������炢���̂ł��傤���ˁj�ɕϊ����ă��C�A�E�g���āANSTextContainer �ŕ`��͈͂��m�肵�܂��B
�O���t�ԍ��̔z������Ƃɂ��ăO���t��̂ł����A�ŏ� NSTextStorage �̃t�H���g�����ƁA�`�悵�����O���t�̃t�H���g�������ԈႦ�Đݒ肵�Ă������߂ɐ�����J����������B�t�H���g���Ⴆ�O���t�ԍ����Ⴄ�̂�������O�݂����ł��ˁB
���āA���̊��ł����ǁA����Ȋ����Ŏg���܂��B [theImage lockFocus];
/* �t�H���g��ނƃT�C�Y���w�� */
[fontAttribute setObject:[NSFont fontWithName:@"Osaka" size:fontSize] forKey:NSFontAttributeName];
/* �t�H���g�̓h��Ԃ��F���w�� */
[fontAttribute setObject:[NSColor whiteColor] forKey:NSForegroundColorAttributeName];
/* �t�H���g�̉����F���w�� */
[fontBorderAttribute setObject:[NSColor blackColor] forKey:NSForegroundColorAttributeName];
[self writeBorderString:string AtPoint:NSMakePoint(0,0)
withAttribute:fontAttribute andBorderAttribute:fontBorderAttribute borderWidth:10.0];
[theImage unlockFocus];
�t�H���g�����𒆐g�Ɖ��Ƃŕ����Đݒ肵�܂��B�Ȃ��̕ӂ̎g�����͐v�~�X�����C������Ȃ��B
����Ȃ킯�����܂ő������͂߂���߂���s���ł����A�Ƃ肠�����w�R�R�A�}���فx�X�^�[�g�����܂��B
����́A����݂����Ȃ܂Ƃ܂������̂���Ȃ��āA�����̊o�������݂����Ȃ��̂ɂȂ��Ă����Ǝv���Ă��܂����A���L�ł�����̂͂ǂ�ǂL���Ă����������̂ł��ˁB�Ƃ肠��������������`�悪��݂��Ȃ��H
2004/3/22 01:14