예제 #1
0
	def _getPointFromOffset(self, offset):
		# Returns physical coordinates.
		rects=self._storyFieldsAndRects[1]
		if not rects or offset>=len(rects):
			raise LookupError
		x,y=rects[offset][:2]
		x,y=windowUtils.logicalToPhysicalPoint(self.obj.windowHandle,x,y)
		return textInfos.Point(x, y)
예제 #2
0
	def _getPointFromOffset(self,offset):
		consoleScreenBufferInfo=self.consoleScreenBufferInfo
		characterX,characterY=self._consoleCoordFromOffset(offset)
		screenLeft,screenTop,screenWidth,screenHeight=self.obj.location
		lineLength=(consoleScreenBufferInfo.srWindow.Right+1)-consoleScreenBufferInfo.srWindow.Left
		numLines=(consoleScreenBufferInfo.srWindow.Bottom+1)-consoleScreenBufferInfo.srWindow.Top
		characterWidth=screenWidth/lineLength
		characterHeight=screenHeight/numLines
		relativeX=(characterX-consoleScreenBufferInfo.srWindow.Left)*characterWidth
		relativeY=(characterY-consoleScreenBufferInfo.srWindow.Top)*characterHeight
		x=relativeX+screenLeft
		y=relativeY+screenTop
		return textInfos.Point(x,y)
예제 #3
0
	def moveTo(self,x,y,new=False,unit=textInfos.UNIT_LINE):
		obj=api.getDesktopObject().objectFromPoint(x,y)
		prevObj=None
		while obj  and obj.beTransparentToMouse:
			prevObj=obj
			obj=obj.parent
		if not obj or (obj.presentationType!=obj.presType_content and obj.role!=controlTypes.ROLE_PARAGRAPH):
			obj=prevObj
		if not obj:
			return
		hasNewObj=False
		if obj!=self._obj:
			self._obj=obj
			hasNewObj=True
			if self.updateReview:
				api.setNavigatorObject(obj)
		else:
			obj=self._obj
		pos=None
		if obj.treeInterceptor:
			try:
				pos=obj.treeInterceptor.makeTextInfo(obj)
			except LookupError:
				pos=None
			if pos:
				obj=obj.treeInterceptor.rootNVDAObject
				if hasNewObj and self._obj and obj.treeInterceptor is self._obj.treeInterceptor:
					hasNewObj=False 
		if not pos:
			try:
				pos=obj.makeTextInfo(textInfos.Point(x,y))
			except (NotImplementedError,LookupError):
				pass
			if pos: pos.expand(unit)
		if pos and self.updateReview:
			api.setReviewPosition(pos)
		speechCanceled=False
		if hasNewObj:
			speech.cancelSpeech()
			speechCanceled=True
			speech.speakObject(obj)
		if pos  and (new or not self._pos or pos.__class__!=self._pos.__class__ or pos.compareEndPoints(self._pos,"startToStart")!=0 or pos.compareEndPoints(self._pos,"endToEnd")!=0):
				self._pos=pos
				if not speechCanceled:
					speech.cancelSpeech()
				speech.speakTextInfo(pos,reason=controlTypes.REASON_CARET)
예제 #4
0
	def _getPointFromOffset(self,offset):
		formatFieldStart, formatFieldEnd = self._getUnitOffsets(self.UNIT_FORMATFIELD, offset)
		# The format field starts at the first character.
		for field in reversed(self._getFieldsInRange(formatFieldStart, formatFieldStart+1)):
			if not (isinstance(field, textInfos.FieldCommand) and field.command == "formatChange"):
				# This is no format field.
				continue
			attrs = field.field
			indexInParent = attrs.get("_indexInParent")
			if indexInParent is None:
				continue
			try:
				obj = self._getNVDAObjectFromOffset(offset).getChild(indexInParent)
			except IndexError:
				obj = None
			if not obj:
				continue
			if not obj.location:
				# Older versions of Adobe Reader have per word objects, but they don't expose a location
				break
			return textInfos.Point(*obj.location.center)
		return super(AdobeAcrobat_TextInfo, self)._getPointFromOffset(offset)
예제 #5
0
파일: offsets.py 프로젝트: wafiqtaher/nvda
 def _get_pointAtStart(self):
     try:
         return textInfos.Point(
             *self._getBoundingRectFromOffset(self._startOffset).topLeft)
     except NotImplementedError:
         return self._getPointFromOffset(self._startOffset)
예제 #6
0
파일: offsets.py 프로젝트: wafiqtaher/nvda
 def _getPointFromOffset(self, offset):
     # Purposely do not catch LookupError or NotImplementedError raised by _getBoundingRectFromOffset.
     rect = self._getBoundingRectFromOffset(offset)
     # For backwards compatibility, keep using textInfos.Point instead of locationHelper.Point
     return textInfos.Point(*rect.center)
예제 #7
0
 def _getPointFromOffset(self, offset):
     text, rects = self._textAndRects
     if not text or not rects or offset >= len(rects):
         raise LookupError
     x, y = rects[offset][:2]
     return textInfos.Point(x, y)